maven - 从 Maven 的子模块中检索顶级版本
问题描述
这是Maven 中发布的问题的一个版本:从子模块中检索主模块版本,但我不知道如何应用答案。我正在 Maven 3.6.3 上尝试这个。我已经发布了可以在这个 GitHub 项目中使用的存储库
我有一个顶级项目:
<groupId>com.vps</groupId>
<artifactId>main-module</artifactId>
<version>5.0</version>
<packaging>pom</packaging>
还有一个多模块项目需要由这个顶级项目作为父级,并且它具有独立于顶级项目的版本控制。
这些项目预计不会在同一个存储库中,并且通常彼此独立发布。
我想声明一个属性,我可以进一步使用它来引用这个顶级项目父级的版本(比如拉入具有正确版本的工件):
<artifactId>auxiliary</artifactId>
<version>1.0</version>
<parent>
<groupId>com.vps</groupId>
<artifactId>main-module</artifactId>
<version>5.0</version>
</parent>
<properties>
<main.version>${project.parent.version}</main.version>
</properties>
<modules><module>corelib</module></modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.vps</groupId>
<artifactId>main-module-1</artifactId>
<version>${main.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
现在,子模块是拉取和使用依赖:
<parent>
<groupId>com.vps</groupId>
<artifactId>auxiliary</artifactId>
<version>1.0</version>
</parent>
<artifactId>corelib</artifactId>
<properties>
<!-- this doesn't work
<main.version>${project.parent.parent.version}</main.version>
-->
</properties>
<dependencies>
<dependency>
<groupId>com.vps</groupId>
<artifactId>main-module-1</artifactId>
</dependency>
</dependencies>
如果我在POM 中设置main.version
为对的引用,则编译失败,因为它试图拉取不存在的。我猜这是因为属性是根据当前正在处理的有效 POM 来解析的,并且从那里开始,就是' 父级的版本。${project.parent.version}
auxiliary
corelib
com.vps:main-module-1:1.0
${project.parent.version}
corelib
main.version
如果我在corelib
子模块中覆盖as ${project.parent.parent.version}
,我会收到一条错误消息,指出计算的有效版本com.vps:main-module-1
是'${project.parent.parent.version}'
,并且是无效的。我想这意味着该属性不能一起解决,但我不太明白为什么。
那么,我如何合理地(即没有硬编码父定义和另一个属性中的顶级)从后代子模块中引用顶级版本值?
解决方案
推荐阅读
- c# - 使用asp.net C#在DataTable中获取非唯一记录
- android - 未使用 DisposableSubscriber 调用 onComplete()
- html - 为什么我的 DIVS 对我给它们的任何宽度都没有反应?
- javascript - Angular 6:HttpHeaders 无法在 Chrome 和 IE11(而不是 Firefox)中读取 null 的属性“长度”
- flutter - 如何在 Flutter 中为 ExpansionPanel 添加背景颜色
- php - 如何将html数据发送到另一个php页面
- c# - 即使在 PhraseRecognitionSystem 被处理后,听写识别会话也不会开始
- office-js - 自定义函数中的批处理
- java - 为什么空行不包含在代码覆盖率中?
- apache - RewriteRule 与包含哈希的 URL 不匹配