マルチモジュールのmavenプロジェクトがあります。サイトを構築しようとすると、実行maven site
親プロジェクトでは、モジュールの1つへの依存関係を解決できません。しかし、もし私がコンパイルすれば(mvn clean compile
親プロジェクトで)またはテストを実行(mvn clean test
on親プロジェクト)依存関係の問題はありません。
何がそのような行動を引き起こす可能性がありますか?
[〜#〜]更新[〜#〜]
Mavenバージョン
Apache Maven 3.0.2 (r1056850; 2011-01-09 02:58:10+0200)
Java version: 1.6.0_26, vendor: Sun Microsystems Inc.
Java home: c:\Program Files\Java\jdk1.6.0_26\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", Arch: "AMD64", family: "windows"
maven-site-pluginバージョン
[DEBUG] Included: org.Apache.maven.plugins:maven-site-plugin:jar:2.0.1
エラーメッセージ
[ERROR] Failed to execute goal on project myproj-client: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project myproj-client: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT
at org.Apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.Java:190)
at org.Apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.Java:104)
at org.Apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.Java:258)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:201)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:153)
at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:145)
at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:84)
at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:59)
at org.Apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.Java:183)
at org.Apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.Java:161)
at org.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:319)
at org.Apache.maven.DefaultMaven.execute(DefaultMaven.Java:156)
at org.Apache.maven.cli.MavenCli.execute(MavenCli.Java:534)
at org.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:196)
at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:141)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
at Java.lang.reflect.Method.invoke(Method.Java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:352)
Caused by: org.Apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT
at org.Apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.Java:156)
at org.Apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.Java:165)
... 22 more
Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.Java:526)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveArtifacts(DefaultRepositorySystem.Java:304)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.Java:334)
at org.Apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.Java:150)
... 23 more
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.Java:517)
... 26 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.Apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :myproj-client
私は同じ問題を抱えています。 Mavenのソースコードをあまり詳しく調べていません。しかし、これが私の観察です。
ローカルリポジトリでmvn install
myproj-commonを実行したり、リモートリポジトリにデプロイしたりしないと仮定します。親プロジェクトでmvn clean site
を実行すると、次のようになります。
mvn clean site
はmyproj-commonで実行されます。 myproj-common/targetの以前の結果はすべて削除され、myproj-common/target/siteが生成されます。 (この手順の後、コンパイルされたクラスもパッケージ化されたjarもmyproj-common/targetに存在しないことに注意してください)mvn clean site
はmyproj-clientで実行されます。 Mavenは最初にこのプロジェクトの依存関係をチェックし、次の場所でmyproj-commonのアーティファクト(クラスまたはjar)を見つけようとします:(a)myproj-common/target (b)ローカルリポジトリ(3)リモートリポジトリ。mvn site
はmyproj-clientで失敗します。これはmyproj-commonのアーティファクトが見つからないためです。これは、mvn clean compile site
およびmvn clean package site
が機能する理由を説明しています。どちらも、mvn site
がmyproj-clientで実行される前に、ターゲットディレクトリにmyproj-commonアーティファクトを準備していたはずです。
また、mvn install
の後にmvn site
を続けても機能します。
特別な例外は、emma-maven-pluginのようなものをレポートに追加すると、クラスが自動的にコンパイルおよび計測されることです。この場合、mvn clean site
は常に機能します。
Mavenがステップ3でmyproj-commonのjarを見つけようとする理由がわかりません。mvn site
とは何の関係もないようです。例外は、maven-site-pluginに入る前のmavenコアのかなり早い段階で発生します。これは、maven-site-pluginの問題ではなく、すべてのmavenライフサイクルの共通の動作のように見えます(cleanを除く)。
私は同じに直面していましたが、StrutsとPaypal_base依存関係については、次のようにして修正しました。
次のmvnコマンドを使用してそのjarファイルをインストールしました
mvn install:install-file -Dfile = C:\ Dependencies\Paypal_base.jar\-DgroupId = Paypal -DartifactId = Paypal_base -Dversion = 0.1\-Dpackaging = jar
そして
mvn install:install-file -Dfile=C:\Dependencies\struts.jar \
-DgroupId=struts -DartifactId=struts -Dversion=0.1 \
-Dpackaging=jar
(-DFileはシステム内のjarファイルの場所です)
jarを確認する必要があります。上記の使用方法はjarが存在しないことを示しています。これは役立つでしょう。
これは、リアクターにアクセスできないサイトプラグインの問題である可能性があり、プロジェクトのアーティファクトがプロジェクトソースで利用可能であることがわかりません。 (これは単なる仮説であり、おそらく MSITE-302 によってサポートされます。)
まずアーティファクトをローカルリポジトリにインストールするmvn install
を実行してから、mvn site
を実行してみてください。
Reactorの詳細については、次を試してください。
なんらかの理由で、モジュールと親のpomファイルに変更を加えた後、問題は消えました。何が行われたのか正確にはわかりませんが、現在mvn site
親プロジェクトは正常に動作しています。残念ながら、問題の原因を調査する時間はありません。しかし、サイトのバージョンを3.0に変更すると、正しい方向に進んだようです。また、私は次のようにして(修正される前の)サイトを実行できましたmvn compile site
、この場合、依存関係を見つけることができます。
Mavenがリポジトリーでmyproj-common:jar:0.0.1-SNAPSHOTを探しているようです。
失敗の理由として、mavenがリポジトリー内のスナップショットアーティファクトにアクセスできないことが考えられます。
スナップショットアーティファクトを有効にするには:
リポジトリセクションの下にあるsnapshotsタグのpom.xmlを確認してください。
<repository>
<name>xyz</name>
<id>repoid</id>
<url>http://x.y.z</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>