maven - 我可以通过设置 RelPath 来拥有一个 Maven 父项目吗
问题描述
我有一个多模块项目。
父项目不包含任何代码,只是设置公共属性定义、项目版本号等。并指定模块和构建顺序。
我希望每个子模块都有一个
<parent>
<relpath>../pom.xml</relpath>
</parent>
所以每个模块都继承了组,版本,以及java编译器版本等公共属性。
但这似乎不是有效的 Maven。我必须指定父组、工件和版本。(而不仅仅是 artifactID)。
当我提升项目的版本时,我必须进入每个子模块来提升父模块的版本。
我宁愿不必跟踪子模块 A 版本 X 与子模块 B 版本 Y 兼容...我希望所有子模块(A..Z)都有一个与项目(父级)匹配的新版本。
这可能吗?
解决方案
是的,这是可能的,但您需要使用第三方插件,即Mojo/Codehaus的 Versions 插件。您不需要安装或做任何特别的事情来使用它,但它不是核心插件的一部分。
假设您有以下布局:
根 POM:
<project>
<groupId>org.example</groupId>
<artifactId>root-pom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<modules>
<module>child-1</module>
...
</modules>
...
</project>
子 POM(s),直接位于根 POM 的子目录中,具有内部依赖关系:
<project>
<parent>
<groupId>org.example</groupId>
<artifactId>root-pom</artifactId>
<version>1.0.0-SNAPSHOT</version> <!-- Hard-coded -->
<relativePath>..</relativePath>
</parent>
<artifactId>child-1</artifactId>
...
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>child-2</artifactId>
<version>${project.version}</version> <!-- Dependency to another module in the reactor -->
</dependency>
</project>
现在,如果你有很多子模块,你可以使用这个命令来保持你的反应器连贯:
mvn versions:set versions:commit -DnewVersion=1.1.0-SNAPSHOT
这会将您所有的 POM 转换为版本1.1.0-SNAPSHOT
(或您选择的任何版本),以便子 pom 中的父版本与根 POM 相同。巧合的是,这与发布插件在mvn release:prepare
.
推荐阅读
- r - 在 2 列数据框中,如何将第二列数字格式化为 2 位小数
- linux - 增加 WPEA-121N Wifi 卡中的 tx 功率
- objectify - 对象化:有没有办法知道实体是从对象化会话加载还是直接从数据存储加载?
- python-2.7 - pip 安装了非指定的 generator_tools 包并触发了 `AssertionError: Python version 2.5 or 2.6 required` 错误
- javascript - 关于 getElementById 的说明
- python - 循环嵌套中的python isinstance
- jquery - 如何在 PC 屏幕上显示 8 个视频,在移动屏幕上显示 4 个视频
- python - ModuleNotFoundError:没有名为“sklearn.linear_model._base”的模块
- javascript - 如何从 Angular 的浏览器控制台中选择选项值?
- android - 如何在 Android 应用程序中使用 branch.io 深层链接添加朋友