2016-12-29 10 views
0

次の依存関係を持つ次の構造を持っています:child1-> child2。

とその親であり、すべてのバージョンを依存関係管理で統合します(${project.version}を使用)。

フォルダ構造:+完全な例here以下

+ parent 
    + child1 
    + child2 

参照くださいPOMS。

child2のバージョンが .0-SNAPSHOTに設定されていると、すべて機能します。

を変更しようとすると、ちょうど 0.0-SNAPSHOTにのバージョンをCHILD2とき、私は次のエラーを取得する:

Failure to find ...:child1:jar:2.0-SNAPSHOT 

なぜMavenはバージョンchild1の 2.0を見つけようとしていると1.0ではなく?

親:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>info.fastpace.issue.unknowversion</groupId> 
    <artifactId>parent</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0-SNAPSHOT</version> 

    <modules> 
     <module>child1</module> 
     <module>child2</module> 
    </modules> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>info.fastpace.issue.unknowversion</groupId> 
       <artifactId>child1</artifactId> 
       <version>${project.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>info.fastpace.issue.unknowversion</groupId> 
       <artifactId>child2</artifactId> 
       <version>${project.version}</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
</project> 

CHILD1:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>child1</artifactId> 

    <parent> 
     <groupId>info.fastpace.issue.unknowversion</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
</project> 

CHILD2は:

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>child2</artifactId> 
    <version>2.0-SNAPSHOT</version> 

    <parent> 
     <groupId>info.fastpace.issue.unknowversion</groupId> 
     <artifactId>parent</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>info.fastpace.issue.unknowversion</groupId> 
      <artifactId>child1</artifactId> 
     </dependency> 
    </dependencies> 
</project> 

答えて

1

ハードコーディングされた1.0-SNAPSHOTで親ポンポンで${project.version}を交換し、これを解決しているようです。

ハードコーディングされた値に変更するのはなぜか分かりませんが、少なくとも動作します。

+0

あなたの子供2では '$ {project.version}'は私が期待していた '1.0-SNAPSHOT'ではなく' 2.0-SNAPSHOT'です。これは、私にとってchild2は、parent1とchild1のようなプロジェクトの残りのサイクルとは別のサイクルでリリースされることを意味します。これは結果的に、child2はそれ自身のリリースサイクルを持つため別のプロジェクトでなければならないことを意味します。 – khmarbaise

+0

2.0の代わりに '1.0.1'を作ると想像してください。今は違うの? –

+0

いいえ違いはありません。親を含むすべてのモジュールが同じバージョンを持っていない場合、マルチモジュールビルドは意味をなさない...マルチモジュールビルドは、同じリリースサイクルと同じバージョンを持つすべてのモジュール/チャイルドを持つことを意図しています.... – khmarbaise

関連する問題