Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复多模块maven构建中的属性解析?_Java_Git_Maven - Fatal编程技术网

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

Java 如何修复多模块maven构建中的属性解析?,java,git,maven,Java,Git,Maven,我正在将多存储库和多项目构建转换为单存储库多模块构建 每个项目都有自己的git回购协议,因此在签出时,所有项目都处于同一级别 ProjectA ProjectB ProjectC 需要注意的是,每个项目都有不同的版本。ProjectC依赖于ProjectB和ProjectB依赖于ProjectA 我在与其他项目处于同一级别的文件夹中创建了一个超级pom,并将其他项目作为模块添加到超级pom中,并在其他项目中引用了父pom,这导致以下布局: ProjectX ModuleA ModuleB Mo

我正在将多存储库和多项目构建转换为单存储库多模块构建

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

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存储库

但是如果我尝试构建一个单独的modudle
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

有没有办法解决这个问题?还是将回购协议合并到单个构建中的更好方法

我正在将多存储库和多项目构建转换为 单存储库多模块构建

[……]

需要注意的是,每个项目都有不同的版本


如果您希望为不同的项目提供不同的版本,我强烈建议您将它们保存在不同的存储库中,否则您将面临各种各样的工具问题。

问题在于,我们希望共同发布组件并简化发布周期。到目前为止,我已经将所有项目设置为
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}