占位符${project.version}
如何解决来自父pom的托管属性?我希望它在全局范围内得到解决,所以当父pom有版本2时,${project.version}
也会被解析为版本2.
在父母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>
在孩子我使用
<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。
答案 0 :(得分:32)
您必须跳过子级中的<version>
标记,但保留<parent><version> ... </parent>
标记。
http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance
要注意的一个因素是这些变量在之后处理 继承如上所述。这意味着如果是父项目 使用变量,然后在子节点中定义它,而不是父节点, 将是最终使用的那个。