継続的インテグレーション ジョブ (Hudson) を 2 つのステップに分割したいと考えています。(ビルドとレポートを一緒に実行すると時間がかかりすぎるためです。) 最初のジョブで、「mvn パッケージ」を使用してマルチ モジュール Maven プロジェクトを正常にビルドしました。次に、自分のワークスペースを別の場所にコピーし、目標 "site" および/または findbugs/checkstyle/pmd のみを使用してプロジェクトを再度ビルドして、レポートを作成しようとします。しかし、これはうまくいきません!Mavenがサブモジュールの依存関係を解決できません。(ただし、すべての JAR はそのターゲット フォルダーで利用できます。)
例: 私の構造は次のようになります。
- 親
- あ
- B
- C
- D
プロジェクト C は、依存プロジェクト B として持っています。
「mvn サイト」ですべてをビルドすると、プロジェクト A と B のすべてのレポートが生成されます。しかし、プロジェクト C で停止し、「プロジェクト B の依存関係を解決できませんでした」というエラー メッセージが表示されました。しかし、プロジェクトBはすでに「mvn package」でビルドされています。つまり、プロジェクト B の JAR ファイルはそのターゲット フォルダーにあります。
「mvn install」なしでサブモジュール B から依存関係を解決する方法はありますか? (私は自分の ci サーバーでこれを実行したくありません。同じコード ベースを持つ他のジョブにとって危険である可能性があるのではないかと心配しています。)
2012 年 8 月 20 日更新:
ルート フォルダーの POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>Foo</name>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>parent</module>
</modules>
</project>
親 POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>Foo</name>
<groupId>foo</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>../bar-a</module>
<module>../bar-b</module>
<module>../bar-c</module>
<module>../bar-d</module>
</modules>
[...]
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.5.1</version>
[...]
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
[...]
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
[...]
</plugin>
</plugins>
</reporting>
</project>
BのPOM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>foo</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
<relativePath>../parent</relativePath>
</parent>
<name>Bar B</name>
<artifactId>bar-b</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
[...]
</project>
CのPOM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>foo</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
<relativePath>../parent</relativePath>
</parent>
<name>Bar C</name>
<artifactId>bar-c</artifactId>
<packaging>jar</packaging>
[...]
<dependencies>
<dependency>
<groupId>foo</groupId>
<artifactId>bar-b</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
[...]
</project>