如何处理maven中的版本?

时间:2012-06-11 15:33:09

标签: maven maven-3

我在父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)。

感谢, 迪安

4 个答案:

答案 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测试的构建。