在工作中,某人已经对JDK 1.5特定的项目进行了大量更改。不幸的是,一些生产环境仍然是Java 1.4,因此他们已经使用了由/ trunk的jdk1.4版本组成的双分支。
这个1.4分支的生命周期可能至少为一年,在此期间,trunk的更改将合并到jdk1.4分支中。
我被问到的问题是,在这种情况下是否有任何关于处理Maven工件id的最佳实践?显然,最好的做法可能会避免让我们在这种情况下开始,但现在我们是......该怎么办?
我们考虑给另一个分支一个唯一的工件ID,例如“myapp-jdk14”,同时保持每个其他标识符字段(groupId,version)同步。这样做有明显的缺点吗?
答案 0 :(得分:4)
您可以使用分类器:
<强>分类强> 分类器允许区分从相同POM构建但其内容不同的工件。它是一些可选的任意字符串 - 如果存在 - 将附加到版本号之后的工件名称。
作为此元素的动机,请考虑一个项目,该项目提供针对JRE 1.5的工件,但同时也是一个仍支持JRE 1.4的工件。第一个工件可以配备分类器jdk15,第二个工件可以配备jdk14 客户可以选择使用哪一个。
答案 1 :(得分:4)
事实上,有两种常用的解决方案:
jdk14
。例如,Bouncy Castle或SLF4j使用此策略。根据我的经验,有趣的是,第一种解决方案实际上经常被使用,尽管第二种解决方案是正式建议的。
就个人而言,我使用的是第一种解决方案,但是 - 说实话 - 我没有看到一种解决方案对另一种解决方案有任何强大的优势(或劣势)。
答案 2 :(得分:-1)
您可以使用您的解决方案但我建议使用不同的版本号。
例如:
1.0.X for JDK 1.4
1.1.X for JDK 1.5
这并不意味着我的建议比你的好。你的解决方案有一个优势,可以看出基于artifactId的jdk非常明显。