私はMavenを広範囲に使用していません
現在、5 つの異なる Maven プロジェクトがあり、それぞれに異なる pom.xml があります。現在、それらの間には依存関係があり、必要に応じてそれぞれが <依存関係> で他を指しています。
現在、私たちが嫌いなことは
- 子 projectA をリリースするとき、新しいバージョンを使用するために、依存関係として projectA を持つすべてのプロジェクトを手動で変更する必要があります。Saw Maven には version plugin がありますが、それがどのように役立つかはわかりません。
- 解決策として、私は poms 間のよりクリーンな組織を持ち、上記の問題を回避したいと考えています。
私が考えたのは(間違っているかもしれません)
太い矢印は親子関係を表し、細い矢印はサブモジュールを表します。しかし、これは機能していないようです。以下のコードとエラーを参照してください
子プロジェクト 2 ポン
<groupId>ChildProject2</groupId>
<artifactId>ChildProject2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>Parent</groupId>
<artifactId>Parent</artifactId>
<version>${parent.version}</version>
<relativePath>../Parent/pom.xml</relativePath>
</parent>
<dependencies> ... </dependencies>
ChildProject2 - エラープロジェクト ビルド エラー: 解決できない親 POM: http://repo1.maven.org/maven2 からの Parent:Parent:pom:${parent.version} の転送に失敗しましたが、ローカル リポジトリにキャッシュされました。解決は行われませんCentral の更新間隔が経過するか、更新が強制されるまで再試行されます。元のエラー: アーティファクト Parent:Parent:pom:${parent.version} を中央 ( http://repo1.maven.org/maven2 ) から転送できませんでした: インデックス 45 のパスに無効な文字: http://repo1 .maven.org/maven2/Parent/Parent/ ${parent.version}/Parent-${parent.version}.pom および 'parent.relativePath' が間違ったローカル POM を指している
親ポン
<groupId>Parent</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<parent.version>0.0.1-SNAPSHOT</parent.version>
</properties>
<modules>
<module>../ChildProject2</module>
<module>../ChildProject1</module>
</modules>
<dependencies> ... </dependencies>
祖父母 2 ポン
<groupId>GrandParent2</groupId>
<artifactId>GrandParent2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<grandparent2.version>0.0.1-SNAPSHOT</grandparent2.version>
</properties>
<modules>
<module>../Parent</module>
</modules>
<dependencies>... </dependencies>
ParentMain.java
public class ParentMain {
public static void main(String[] args) {
DocumentFactory df = new DocumentFactory();
ChildProject1Main cp1 = new ChildProject1Main();
ChildProject2Main cp2 = new ChildProject2Main();
}
}
ParentMain - エラー
- ChildProject1Main を型に解決できません
- ChildProject1Main を型に解決できません
現在、Maven バージョン2.2.1 を使用しています (アップグレードされた Maven バージョンを使用してこれを解決できる場合は、アップグレード可能です) 以下のコメントの 1 つは、「Jenkins や TeamCity などの CI ツール」を使用してこれを解決できると述べています.. 任意のポインター (例) Maven (およびまたは Hudson ) を使用してこれを解決する方法??
私は何を間違っていますか、そのようなプロジェクトの依存関係に最適な設計を取得する方法