如何在maven中处理版本?
我在整个父pom和子pom中都有这些版本号,包括这样的父引用如何在maven中处理版本?,maven,maven-3,Maven,Maven 3,我在整个父pom和子pom中都有这些版本号,包括这样的父引用 <parent> <groupId>com.cigna.ifp</groupId> <artifactId>ifp-core</artifactId> <version>${parent.version}</version> </parent> com.cigna.ifp ifp核心 ${paren
<parent>
<groupId>com.cigna.ifp</groupId>
<artifactId>ifp-core</artifactId>
<version>${parent.version}</version>
</parent>
com.cigna.ifp
ifp核心
${parent.version}
以及对其他子项目的依赖引用,如
<dependency>
<groupId>com.cigna.ifp</groupId>
<artifactId>ifp-shared</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
com.cigna.ifp
ifp共享
1.0-快照
最后是我们正在构建的东西版本的声明
<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>
4.0.0
com公司
人造物
1.0-快照
罐子
ifp共享
http://maven.apache.org
根据解决了一半问题的一些答案进行编辑
我们希望所有版本都是${project.version},因为它实际上只是一个项目和一个发行号
我似乎可以在依赖项中执行${project.version},但这在上面的父xml代码中不起作用。还有别的办法吗?(老兄,我真的应该换成格拉德尔)
谢谢,
Deanproject.version是您想要的。不是父版本。project.version是您想要的。不是父级。版本。
<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>
com.cigna.ifp
ifp核心
1.2.3-快照
废话
com.cigna.ifp
ifp共享
${project.version}
com.cigna.ifp
ifp核心
1.2.3-快照
废话
com.cigna.ifp
ifp共享
${project.version}
您需要使用DependencyManager标记在父pom中为依赖项集中化版本
看看这个问题和答案
对于您自己的模块,有些属性是从父pom继承的。您需要在每个子项中声明父项版本,但如果希望子项pom与父项pom相同,则不需要在子项pom中声明groupId/版本。您需要使用dependencyManagement标记在父项pom中为依赖项集中化版本 看看这个问题和答案
对于您自己的模块,有些属性是从父pom继承的。您需要在每个子项中声明父项版本,但如果您希望子项POM与父项POM相同,则不需要在子项POM中声明groupId/版本。我们现在切换到gradle,它的效果非常好。每个自动生成的新版本都以1.2.x的形式发布,其中x是下一个生成编号。下游项目取决于1.2.+。这允许每个版本都是官方的,这样QA可以测试它,拒绝它,或者去,是的,build 1.2.568是我们将向世界发布的版本。项目可以依赖于1.2。但是他们没有得到bug修复。这似乎比所有的快照废话要有效得多,因为你给QA一个快照,他们批准了,你必须更改并进行另一个构建。我们希望每个构建看起来都是官方的,这样他们就可以发布一个恰好通过了所有QA测试的构建。我们切换到gradle,它现在运行得非常好。每个自动生成的新版本都以1.2.x的形式发布,其中x是下一个生成编号。下游项目取决于1.2.+。这允许每个版本都是官方的,这样QA可以测试它,拒绝它,或者去,是的,build 1.2.568是我们将向世界发布的版本。项目可以依赖于1.2。但是他们没有得到bug修复。这似乎比所有的快照废话要有效得多,因为你给QA一个快照,他们批准了,你必须更改并进行另一个构建。我们希望每个构建看起来都是正式的,这样他们就可以发布恰好通过所有QA测试的构建。我不想在我的5个子项目中键入1.2.3-SNAPSHOT…我如何避免这样做?不幸的是,我不知道。其思想是项目是自包含的,因此您需要pom中的某个版本。也就是说,您可以使用一个父版本和从公共repo获得的父版本进行构建,并且与当前文件系统中的版本不同。这并不是说你想这么做,但maven现在就是这样工作的。顺便说一句,在你的子项目中,version和groupId默认都是从父项目继承的,可以忽略不计。此外,您还可以通过在父项目中使用dependencyManagement来解决依赖项中的${project.version},但我不确定在所有情况下都建议这样做。我不想在我的5个子项目中键入1.2.3-SNAPSHOT…如何避免这样做?不幸的是,我不知道。其思想是项目是自包含的,因此您需要pom中的某个版本。也就是说,您可以使用一个父版本和从公共repo获得的父版本进行构建,并且与当前文件系统中的版本不同。这并不是说你想这么做,但maven现在就是这样工作的。顺便说一句,在你的子项目中,version和groupId默认都是从父项目继承的,可以忽略不计。此外,您还可以通过在父级中使用dependencyManagement来解决依赖项中的${project.version},但我不确定在所有情况下都建议这样做。