2012-04-29 83 views
2

在工作中,有人对JDK 1.5特定的项目进行了大量更改。不幸的是,一些生产环境仍然是Java 1.4,所以他们采用创建一个由/ trunk的jdk1.4版本组成的双分支。如何处理Maven中两个几乎完全相同的发布分支

这个1.4分支可能有至少一年的生命周期,在此期间trunk的变化被合并到jdk1.4分支中。

我被问到的问题是在这种情况下是否有处理Maven artifact id的最佳实践?显然,最佳实践可能会避免让我们在这种情况下开始,但现在我们是......要做什么?

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

回答

-1

你可以使用你的解决方案,但我会建议有不同的版本号。

例如:

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

这并不意味着我的建议是比你的好。你的解决方案有很大的好处,可以根据artifactId来查看它是非常明显的jdk。

+0

这会打破语义版本控制,并在发布新的次要版本时进行混淆 - JDK 1.4中的1.0.X后面是什么?这是一个非常糟糕的建议。 – 2012-04-29 14:41:54

4

你可以使用分类为这样的:

分类: 分类器允许区分同一POM都建立了,但它们的内容不同的工件。它是一些可选的和任意的字符串,如果存在的话,会附加到版本号后面的工件名称。

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

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

4

事实上,有2个为这个常用的解决方案:

  1. 添加一些特殊的,定制的后缀为文物的名称,像jdk14。例如,Bouncy CastleSLF4j使用此策略。
  2. 使用分类器,事实上这些分类器专门用于区分相同工件(您的案例)的变体。

从我的经验来看,有趣的是,第一个解决方案实际上更常用,尽管事实上第二个解决方案已经正式提出了。我个人使用第一种解决方案,但是 - 说实话 - 我没有看到一种解决方案相对于另一种解决方案的强大优势(或缺点)。

+0

感谢您的时间和良好的答案! – oligofren 2012-05-03 07:48:18

相关问题