[英]How to fix property resolution in multimodule maven build?
我正在将多存储库和多项目的构建过渡到单个存储库多模块的构建。
每个项目都有自己的git repo,因此在签出所有项目时都处于同一级别。
ProjectA
ProjectB
ProjectC
请务必注意,每个项目的版本都不同。 ProjectC
依赖于ProjectB
, ProjectB
依赖于ProjectA
An。
我已经在与其他项目相同级别的文件夹中创建了一个超级pom,并将其他项目作为模块添加到超级pom中,并在其他项目中引用了父pom,这导致了以下布局:
ProjectX
ModuleA
ModuleB
ModuleC
对于具有父引用的子模块,如下所示:
<parent>
<groupId>my.company</groupId>
<artifactId>artifact</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../ProjectX</relativePath>
</parent>
我有一个settings.xml
其中包含两个配置文件,引用了每个模块的正确快照和发行版:
<profile>
<id>all-snapshot</id>
<properties>
<a.version>1.5-SNAPSHOT</a.version>
<b.version>2.6-SNAPSHOT</b.version>
<c.version>3.7-SNAPSHOT</c.version>
</properties>
</profile>
<profile>
<id>all-release</id>
<properties>
<a.version>1.4.0</a.version>
<b.version>2.5.0</b.version>
<c.version>3.6.0</c.version>
</properties>
</profile>
如果我使用mvn clean install -s settings.xml -P all-snapshot -f ProjectX
发布项目构建,那么一切似乎都可以正常工作,并且本地存储库中仅生成了快照依赖项。 如果我对all-release
配置文件执行它似乎也可以正常工作,仅将发布版本下载到本地maven存储库。
但是,如果我尝试构建单个模块mvn clean install -s settings.xml -P all-snapshot -f ProjectX -pl :modulec
全新mvn clean install -s settings.xml -P all-snapshot -f ProjectX -pl :modulec
, mvn clean install -s settings.xml -P all-snapshot -f ProjectX -pl :modulec
得到:
Could not resolve dependencies for project modulec:3.7-SNAPSHOT: The following artifacts could not be resolved: moduleb:jar:${b.version}, moduela:jar:${a.version}
看起来属性解析不能正常工作,这可能是因为Maven调用缺少了某些东西,或者是因为项目布局损害了Maven。
有想法该怎么解决这个吗? 还是将存储库合并到单个版本中的更好方法?
我正在将多存储库和多项目的构建过渡到单个存储库多模块的构建。
[...]
请务必注意,每个项目的版本都不同。
如果要为不同的项目使用不同的版本,强烈建议将它们保留在不同的存储库中,否则您将面临各种工具问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.