【发布时间】:2017-01-18 18:10:43
【问题描述】:
我有一个包含 2 个模块的 Maven 项目。我希望模块继承该项目的版本,而不是将其定义为任何子模块的 POM 文件中的父级(其背后的原因是模块已经有父级)。实现这一目标的最佳方法是什么?
从属性文件导入版本不起作用,因为 maven 需要一个常量值作为项目版本,而不是表达式。 Maven 插件(例如版本 maven 插件或 maven 发布插件)不能解决我的问题,因为我需要可以在 IDE 中工作的东西(我必须使用 Eclipse 来打包项目,而不是我的电话)。
编辑
澄清事情(如果我的原始帖子不够清楚,请道歉)
主项目 POM 文件
...
<groupId>org.mygroup</groupId>
<artifactId>parentproject</artifactId>
<version>1.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
<module>module2</module>
</modules>
...
模块 POM 文件示例
...
<groupId>org.mygroup</groupId>
<artifactId>module1</artifactId>
<version>1.1.0-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<!-- Some parent that's NOT the main project, e.g. Spring Boot -->
</parent>
...
我想要的是一个解决方案,它允许我只设置一次版本(例如在主项目 POM 文件中)并让该项目的每个模块“继承”该版本。
【问题讨论】:
-
有点不清楚你在问什么。如果我做对了,你有 2 个模块,这意味着它们已经是具有父级的多模块 Maven 项目的一部分。现在您希望这两个模块从第二个父级继承吗?您可以发布一些配置的示例 POM 吗?
-
你可以定义一个
pom类型的新maven项目并对其有依赖 -
在我的帖子中添加了示例 POM
-
作为家长,您必须使用您的
parentproject。你不能有 2 个父母,对于 Spring Boot,你不需要使用他们的父母 POM,见stackoverflow.com/questions/20731158/… -
是的,我知道我不能有两个父母,并且我已经阅读了对该问题的回复(Spring Boot 只是我在上面的示例中所述的一个示例,可能还有另一个项目是用作父项目,另外我想同时使用父项目提供的依赖项和插件管理,而无需在 POM 文件中“手动”添加它们)。我想实现版本“继承”,而不是从
parentproject实际继承。我意识到我所要求的可能实际上并不存在,但我认为值得一问,因为我对 Maven 不太熟悉。
标签: java eclipse maven multi-module