我如何处理Maven中两个几乎相同的发布分支

时间:2012-04-29 14:30:10

标签: maven release-management

在工作中,某人已经对JDK 1.5特定的项目进行了大量更改。不幸的是,一些生产环境仍然是Java 1.4,因此他们已经使用了由/ trunk的jdk1.4版本组成的双分支。

这个1.4分支的生命周期可能至少为一年,在此期间,trunk的更改将合并到jdk1.4分支中。

我被问到的问题是,在这种情况下是否有任何关于处理Maven工件id的最佳实践?显然,最好的做法可能会避免让我们在这种情况下开始,但现在我们是......该怎么办?

我们考虑给另一个分支一个唯一的工件ID,例如“myapp-jdk14”,同时保持每个其他标识符字段(groupId,version)同步。这样做有明显的缺点吗?

3 个答案:

答案 0 :(得分:4)

您可以使用分类器:

  

<强>分类   分类器允许区分从相同POM构建但其内容不同的工件。它是一些可选的任意字符串 - 如果存在 - 将附加到版本号之后的工件名称。

     

作为此元素的动机,请考虑一个项目,该项目提供针对JRE 1.5的工件,但同时也是一个仍支持JRE 1.4的工件。第一个工件可以配备分类器jdk15,第二个工件可以配备jdk14   客户可以选择使用哪一个。

来源:http://maven.apache.org/pom.html

答案 1 :(得分:4)

事实上,有两种常用的解决方案:

  1. 为工件名称添加一些特殊的自定义后缀,例如jdk14。例如,Bouncy CastleSLF4j使用此策略。
  2. 使用分类器,实际上是为这些任务设计的,例如区分相同工件的变体(完全是你的情况)。
  3. 根据我的经验,有趣的是,第一种解决方案实际上经常被使用,尽管第二种解决方案是正式建议的。

    就个人而言,我使用的是第一种解决方案,但是 - 说实话 - 我没有看到一种解决方案对另一种解决方案有任何强大的优势(或劣势)。

答案 2 :(得分:-1)

您可以使用您的解决方案但我建议使用不同的版本号。

例如:

1.0.X for JDK 1.4
1.1.X for JDK 1.5

这并不意味着我的建议比你的好。你的解决方案有一个优势,可以看出基于artifactId的jdk非常明显。