我们使用分类器来构建两种类型的jar:java6和java7。由于依赖性的差异,我们的想法是将它们分开。
在神器中,我看到两个罐子都有适当的分类器。这很好。但是,在目录中我只看到一个POM。 POM始终具有最后构建的jar的时间戳,例如1.0.30-20150325.220019-8
。这意味着如果我构建一个java6 jar,后跟一个java7 jar,那么pom的时间戳将与java 7 jar一样。 java 6 jar的时间戳与pom不匹配。因此,两个分类罐中的一个总是具有与pom不同的快照版本。
最初我使用maven 3.0.3并且java 6拒绝解析jar。但是,切换到maven 3.2.5解决了这个问题。它在java 7中从来都不是问题。此外,在切换到maven 3.2.5之后它起作用了,我认为“那就是maven如何实现它。只需一个共享的pom。”
昨天虽然我们遇到了一个问题,其中java 6 jar构建失败并引用了java 7时间戳。即使jar用于java 6,也只是使用较旧的时间戳。这让我想知道是否应该有两个poms?有没有人见过这个?
答案 0 :(得分:0)
事实证明,用于编译和部署的所有代理都尚未升级到maven 3.2.5。此外,TeamCity已经有一些手动配置明确声明特定的构建我们一个特定的maven版本。
我添加了maven enforcer插件,要求maven为3.2.5以清除它。之后,DevOps能够轻松了解构建失败的原因并进行适当的修复。
要回答我的问题的另一部分,单个POM是在本地和Artifactory上发生的实现。它适用于maven的正确版本,所以我想这就是它的完成方式。在我看到的情况下,当然不会向后兼容。