所以我已经将我的Maven构建部署到我的快照仓库(Nexus)中,同时部署了Java5和Java6版本。我这样做是为了构建配置文件和分类器。在Maven方面,一切都很好。
但是,如果我尝试从基于IVY的项目解析Java5依赖项,那么如果最近的Maven部署是针对Java6配置文件/分类器的话,它将无法工作。我想这是因为maven-metadata.xml
中的时间戳选择了Java6版本。如果最近部署的是Java5,它确实有效。
这是解析器:
<ibiblio name="snapshot-repo-name"
m2compatible="true"
root="snapshot-repo-root"
pattern="[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
usepoms="true"
checkmodified="true"
changingPattern=".*SNAPSHOT"/>
因此,部署依赖的Java6会破坏IVY构建的应用程序的构建。
答案 0 :(得分:1)
解决方法是将Maven快照标记为<distributionManagement/>
元素中的非唯一版本。也就是说,Maven快照存储库中不再有带时间戳的版本。
<distributionManagement>
<repository>
<id>PROJECT-RELEASE</id>
<name>PROJECT-RELEASE</name>
<url>http://foo.bar:8081/nexus/content/repositories/PROJECT-RELEASE</url>
</repository>
<snapshotRepository>
<id>PROJECT-SNAPSHOT</id>
<name>PROJECT-SNAPSHOT</name>
<uniqueVersion>false</uniqueVersion>
<url>http://foo.bar:8081/nexus/content/repositories/PROJECT-SNAPSHOT</url>
</snapshotRepository>
</distributionManagement>
答案 1 :(得分:0)
是解决方案失败还是检索? (检索执行隐式解决)。
我的构建曾失败,因为以下模式不是唯一的(名称模式中需要一个分类器来满足源和javadoc工件):
<ivy:retrieve pattern="lib/[artifact].[ext]"/>