Maven管理的依赖项——解析${project.版本}来自父节点



占位符${project.version}如何从父节点解析托管属性?我期望它是全局解析的,所以当父节点具有版本2时,${project.version}也将被解析为版本2。

在parent pom中,我有:

<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>     

在child中我使用

<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。因此占位符被解析为使用管理的依赖项的项目的版本,而不是那些定义依赖项的项目的版本。

这是预期行为吗?我使用maven 3.0.4

您必须在child中跳过<version>标记,但保留<parent><version> ... </parent>标记。

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

需要注意的一个因素是,这些变量是在如上所述的继承。这意味着如果一个父项目使用一个变量,那么它的定义在子进程中,而不是父进程中,将是最终使用的。

最新更新