繁体   English   中英

如何修复多模块Maven构建中的属性解析?

[英]How to fix property resolution in multimodule maven build?

我正在将多存储库和多项目的构建过渡到单个存储库多模块的构建。

每个项目都有自己的git repo,因此在签出所有项目时都处于同一级别。

ProjectA
ProjectB
ProjectC

请务必注意,每个项目的版本都不同。 ProjectC依赖于ProjectBProjectB依赖于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 :modulecmvn 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM