web-dev-qa-db-ja.com

Maven管理依存関係-親pomからの$ {project.version}の解決

親pomの管理プロパティのプレースホルダー${project.version}はどのように解決されますか?グローバルに解決されると予想していたため、親pomのバージョンが2の場合、${project.version}もバージョン2に解決されます。

親ポンには私が持っています:

<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>2</version>
<packaging>pom</packaging>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>my.group</groupId>
            <artifactId>dep</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>     

私は子供に使用します

<parent>
    <groupId>my.group</groupId>
    <artifactId>parent</artifactId>
    <version>2</version>
</parent>
<version>1</version>
<artifactId>child</artifactId>

ただし、my.group.dep.1.jarではなく、アーティファクトmy.group.dep.2.jarが使用されます。したがって、プレースホルダーはプロジェクトのバージョンに解決されますsing管理対象依存関係であり、プロジェクトのバージョンdefining依存関係ではありません。

それは予想される動作ですか?私はmaven 3.0.4を使用しています

37
Danubian Sailor

子の<version>タグをスキップする必要がありますが、<parent><version> ... </parent>タグは保持してください。

http://maven.Apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance

注意すべき1つの要因は、これらの変数が上記のように継承後に処理されることです。これは、親プロジェクトが変数を使用する場合、親ではなく子でのその定義が最終的に使用されるものになることを意味します。

34
Terafor