通过设置RelPath,我可以拥有一个maven父项目吗

通过设置RelPath,我可以拥有一个maven父项目吗,maven,pom.xml,parent,multi-module,Maven,Pom.xml,Parent,Multi Module,我有一个多模块的项目 父项目不包含代码,只设置公共属性定义、项目版本号等,并指定模块和生成顺序 我希望每个子模块都有一个 <parent> <relpath>../pom.xml</relpath> </parent> ../pom.xml 因此,每个模块都继承组、版本和公共属性,如java编译器版本等 但这似乎不是有效的maven。我必须指定父组、工件和版本。(而不仅仅是artifactID) 当我修改项目的版本时,我必须进入每个子

我有一个多模块的项目

父项目不包含代码,只设置公共属性定义、项目版本号等,并指定模块和生成顺序

我希望每个子模块都有一个

<parent>
    <relpath>../pom.xml</relpath>
</parent>

../pom.xml
因此,每个模块都继承组、版本和公共属性,如java编译器版本等

但这似乎不是有效的maven。我必须指定父组、工件和版本。(而不仅仅是artifactID)

当我修改项目的版本时,我必须进入每个子模块修改父模块的版本

我宁愿不必跟踪子模块A版本X与子模块B版本Y兼容。。。我希望所有子模块(A..Z)都有一个与项目(父)匹配的新版本


这可能吗

是的,这是可能的,但您需要使用第三方插件,即来自的版本插件。您不需要安装或做任何特别的事情来使用它,但它不是核心插件的一部分

假设您有以下布局:

根聚甲醛:

<project>
  <groupId>org.example</groupId>
  <artifactId>root-pom</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <modules>
    <module>child-1</module>
    ...
  </modules>
  ...
</project>

这会将所有POM转换为版本
1.1.0-SNAPSHOT
(或您选择的任何内容),以便子POM中的父版本与根POM相同。巧合的是,这与发布插件在mvn发布期间采用的方法相同:prepare

什么是第三方插件?谢谢你的回答!对不起,我应该说得更清楚些。我在编辑中添加了对插件的引用。
<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