假设版本为1.0的父pom和版本为2.0的子pom。
现在我在父母中定义这样的依赖。
<dependency>
<groupId>somedep</groupId>
<artifactId>somedep</artifactId>
<version>${project.version}</version>
</dependency>
在父级中,版本的计算结果为1.0,但在子级中,它的计算结果为2.0。有没有办法,我可以让它在孩子中评价为1.0(当然,不允许在父母中使用版本进行编码)?
答案 0 :(得分:1)
编辑:
如果我们查看http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance,我们可以看到:
要注意的一个因素是这些变量在之后处理 继承如上所述。这意味着如果是父项目 使用变量,然后在子节点中定义它,而不是父节点, 将是最终使用的那个。
这意味着你不能依赖在父和子中动态解析的变量,并且如果你的孩子和父母有不同的版本,则属于`$ {project.version}类型,这通常不是你和#39; d想要但非常具体你的情况。我想你剩下的就是使用像dependdencyManagement这样的东西来硬编码父依赖:
父:
<project>
<groupId>example</artifactId>
<artifactId>masta</artifactId>
<version>1.0</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>someDep</groupId>
<artifactId>someDep</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>someDep</groupId>
<artifactId>someDep</artifactId>
</dependency>
</dependencies>
</project>
孩子:
<project>
<parent>
<groupId>example</artifactId>
<artifactId>masta</artifactId>
<version>1.0</version>
</parent>
<groupId>example.masta</artifactId>
<artifactId>child</artifactId>
<version>2.0</version>
<dependencies>
<dependency>
<groupId>someDep</groupId>
<artifactId>someDep</artifactId>
</dependency>
</dependencies>
</project>
或者确实在孩子身上明确使用${parent.version}
。有一点需要注意的是,我通常没有聚合器项目,如父引入任何依赖项,但只有dependencyManagement。
这是第二种方法,没有依赖关系管理:
家长:
<project>
<groupId>example</artifactId>
<artifactId>masta</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>someDep</groupId>
<artifactId>someDep</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
孩子:
<project>
<parent>
<groupId>example</artifactId>
<artifactId>masta</artifactId>
<version>1.0</version>
</parent>
<groupId>example.masta</artifactId>
<artifactId>child</artifactId>
<version>2.0</version>
<dependencies>
<dependency>
<groupId>someDep</groupId>
<artifactId>someDep</artifactId>
<version>${parent.version}</version>
</dependency>
</dependencies>
</project>
但我猜这些方法实际上都没有完全满足你的需求。