我在父pom和子poms中都有所有这些版本号,包括像这样的父引用
<parent>
<groupId>com.cigna.ifp</groupId>
<artifactId>ifp-core</artifactId>
<version>${parent.version}</version>
</parent>
和依赖引用其他子项目,如此
<dependency>
<groupId>com.cigna.ifp</groupId>
<artifactId>ifp-shared</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
最后声明我们正在构建的东西的版本
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>artifcat</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ifp-shared</name>
<url>http://maven.apache.org</url>
编辑基于一些解决了一半问题的答案......
我们希望所有版本都是$ {project.version},因为它实际上只是一个具有一个版本号的项目。
我似乎可以在依赖项中执行$ {project.version},但这在上面的父xml代码中不起作用。还有另外一种方法吗? (伙计,我应该切换到gradle)。
感谢, 迪安
答案 0 :(得分:1)
<parent>
<groupId>com.cigna.ifp</groupId>
<artifactId>ifp-core</artifactId>
<version>1.2.3-SNAPSHOT</version> <!-- real version-->
</parent>
<artifactId>blah</artifactId>
<!-- No version here, will be inherited -->
<dependency>
<groupId>com.cigna.ifp</groupId>
<artifactId>ifp-shared</artifactId>
<version>${project.version}</version>
</dependency>
答案 1 :(得分:0)
project.version就是你想要的。不是parent.version。
答案 2 :(得分:0)
您需要使用dependencyManagement标记来中心化父pom中的依赖项版本。
查看此问题和答案
differences between dependencymanagement and dependencies in maven
对于您自己的模块,某些属性是从父pom继承的。您需要在每个子项中声明父版本,但如果您希望它们与其父项相同,则无需在子poms中声明groupId / version。
答案 3 :(得分:0)
我们现在切换到gradle工作的gradle。每个自动构建版本都会以1.2.x的形式发布,其中x是下一个版本号。下游,项目依赖于1.2。+。这允许每个版本都是正式的,所以QA可以测试它,拒绝它或者去,是的,构建1.2.568是我们将向世界发布的版本。项目可以依赖于1.2。但后来他们没有得到错误修复。这似乎比所有快照废话更好,因为你给QA一个快照并且他们批准你必须改变并做另一个构建。我们希望每个构建看起来都是官方的,这样他们就可以发布通过所有QA测试的构建。