Java 如何修复多模块maven构建中的属性解析?
我正在将多存储库和多项目构建转换为单存储库多模块构建 每个项目都有自己的git回购协议,因此在签出时,所有项目都处于同一级别Java 如何修复多模块maven构建中的属性解析?,java,git,maven,Java,Git,Maven,我正在将多存储库和多项目构建转换为单存储库多模块构建 每个项目都有自己的git回购协议,因此在签出时,所有项目都处于同一级别 ProjectA ProjectB ProjectC 需要注意的是,每个项目都有不同的版本。ProjectC依赖于ProjectB和ProjectB依赖于ProjectA 我在与其他项目处于同一级别的文件夹中创建了一个超级pom,并将其他项目作为模块添加到超级pom中,并在其他项目中引用了父pom,这导致以下布局: ProjectX ModuleA ModuleB Mo
ProjectA
ProjectB
ProjectC
需要注意的是,每个项目都有不同的版本。ProjectC
依赖于ProjectB
和ProjectB
依赖于ProjectA
我在与其他项目处于同一级别的文件夹中创建了一个超级pom,并将其他项目作为模块添加到超级pom中,并在其他项目中引用了父pom,这导致以下布局:
ProjectX
ModuleA
ModuleB
ModuleC
子模块具有父引用,如下所示:
<parent>
<groupId>my.company</groupId>
<artifactId>artifact</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../ProjectX</relativePath>
</parent>
如果我使用mvn clean install-s settings.xml-p all snapshot-f ProjectX发布一个项目构建,那么一切似乎都正常工作,并且在本地存储库中只生成快照依赖项。如果我对all release
配置文件执行,它似乎也可以正常工作,只将发布版本下载到本地maven存储库
但是如果我尝试构建一个单独的modudlemvn 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
有没有办法解决这个问题?还是将回购协议合并到单个构建中的更好方法
我正在将多存储库和多项目构建转换为
单存储库多模块构建
[……]
需要注意的是,每个项目都有不同的版本
如果您希望为不同的项目提供不同的版本,我强烈建议您将它们保存在不同的存储库中,否则您将面临各种各样的工具问题。问题在于,我们希望共同发布组件并简化发布周期。到目前为止,我已经将所有项目设置为1.0-SNAPSHOT
,因为在我们正在寻找的布局中保留旧的快照版本是没有意义的。是的,如果您想同时发布组件,只需使用一个repo和一个(发布)版本,并在父POM中管理一个版本。只有当您想独立发布多个版本时,多个版本才有意义。为此,请使用每个发行组的回购协议。
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}