在我的项目中,maven-enforcer规则使用非唯一快照(这是Maven 3中唯一支持的快照)在多模块构建中失败。
例如,假设->是“依赖于”关系,并且:
而模块B和模块C作为独特的构建出现在快照存储库中。POM中所有声明的模块版本目前都是1.0-快照。
现在,A单元的构建失败了:
mvn -pl Module-A install
在以下方面的成果:
[INFO] --- maven-enforcer-plugin:1.0.1:enforce (enforce) @ Module-A ---
[ERROR]
Dependency convergence error for com.vivosys.project:Module-C:1.0-SNAPSHOT paths to dependency are:
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
+-com.vivosys.project:Module-B:1.0-20111228.032527-8
+-com.vivosys.project:Module-C:1.0-SNAPSHOT
and
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
+-com.vivosys.project:Module-C:1.0-20111228.032527-6传递依赖项被解析为非唯一快照生成,但直接依赖项被解析为唯一快照生成。
我使用的是maven 3.0.3,maven-enforcer 1.0.1。存储库是Artifactory 2.4.2,使用的是唯一快照选项(这是Artifactory推荐的,因为Maven 3不再支持非唯一快照)。
解决办法?
Update:看起来像工件允许重写maven客户端行为并将非唯一的快照存储在存储库中。但是,出于某种原因,Artifactory不推荐这样做(请参阅http://wiki.jfrog.org/confluence/display/RTF/Local+Repositories上的"Maven 3“),因此其他解决方案仍然是受欢迎的。
发布于 2012-06-15 08:42:43
此bug已在1.1版中修复(MENFORCER-118)和已发布。
发布于 2011-12-29 07:09:08
您已经命中了这执行器插件错误(作为增强而提出)。
也许,严格地说,作为一种解决办法,您可以显式地声明传递依赖C为A的依赖项?
发布于 2012-01-28 21:04:51
在MENFORCER-118被解析之前,唯一可用的解决方案似乎是将存储库服务器配置为使用非唯一的管理单元。在Artifactory中,这可以通过:Admin, Repositories完成,选择快照存储库并选择Edit。然后在Nonunique下选择Maven Snapshot Version Behavior。
https://stackoverflow.com/questions/8662129
复制相似问题