遵循maven官方文档中的maven ci友好文章,创建了这个多模块项目(最小示例)。
有三个模块和一个根项目(inception):
/inception
/modules
/base (common parent of 'core' and 'facade')
/core (child of 'base')
/facade (child of 'base' having 'core' as a dependency)
执行 mvn package
从 inception
按预期工作-全部3个 *.jar
在相应的 target
福尔德斯。
我想选择建造 facade
模块分开。不幸的是, mvn package
从 modules/facade
无法收集依赖项,并且失败并出现错误
[ERROR] Failed to execute goal on project sample-facade:
Could not resolve dependencies for project sample.group:sample-facade:jar:0.0.1:
Failed to collect dependencies at sample.group:sample-core:jar:0.0.1:
Failed to read artifact descriptor for sample.group:sample-core:jar:0.0.1:
Could not transfer artifact sample.group:sample-base:pom:${revision}
表面问题是 ${revision}
没有被分解成 0.0.1
.
你能帮我解决这个问题吗?
2条答案
按热度按时间ecr0jaav1#
这个
flatten-maven-plugin
解决问题。感谢@khmarbaise,他在评论中提出建议,把文件读到最后。将插件添加到
/modules/base/pom.xml
解决了单独构建子模块的问题:在上开始阶段之前
facade
模块,要求有base
以及core
在本地存储库中,这样maven就可以找到工件。因此,下面是根目录中的操作顺序:mvn install -pl modules/base,modules/core
(或者只是mvn install
)mvn package -pl modules/facade
z9smfwbn2#
我想你在找
mvn
-pl
选项。以下是此选项的定义
mvn -help
:-pl,--projects以逗号分隔的要生成的指定React堆项目列表,而不是所有项目。项目可以由[groupid]:artifactid或其相对路径指定。
所以解决方法是使用
mvn -pl groupId:artifactId package
或者mvn -pl /facade package