从一个命令运行多个 pom 文件

Posted

技术标签:

【中文标题】从一个命令运行多个 pom 文件【英文标题】:Running multiple pom files from one command 【发布时间】:2021-12-14 02:23:39 【问题描述】:

所以我的项目有 3 个模块但没有父 pom 文件。我可以一个一个地手动运行它们,但我正在寻找一种使用单个 mvn 命令运行所有这 3 个 pom 文件的方法,但没有运气。到目前为止,我已经尝试了几种不同的组合,但没有为 ex 工作过 -

mvn -f module1/pom.xml -f module2/pom.xml -f module3/pom.xml clean install

但它只运行第一个 pom 文件,而不是全部 3 个。也尝试使用“呼叫”,但没有奏效。有什么想法吗?

【问题讨论】:

您不需要<parent> 项目,您需要一个聚合器(又名多模块)项目。不要混淆Inheritance vs. Aggregation。 【参考方案1】:

没有。

如果您总是想一起构建这些项目,请将它们放入一个多模块项目并从该项目的主 POM 构建它。

【讨论】:

【参考方案2】:

是否有特定的理由尝试在一个命令中运行它们?如果归结为它们相互依赖,您可以找到需要先运行的 pom 并添加类似这样的内容

你的第一个pom

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>
 
  <modules>
    <module>SecondPomFile</module> <---------------
    <module>ThirdPomFile</module> <---------------
  </modules>
</project>

第二个pom

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>SecondPomFile</artifactId> <---------------
  <version>1</version>
</project>

第三个pom

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.mycompany.app</groupId>
  <artifactId>ThirdPomFile</artifactId> <---------------
  <version>1</version>
</project>

然后像mvn -f pom.xml一样运行它

因为你添加了

  <modules>
    <module>SecondPomFile</module> <---------------
    <module>ThirdPomFile</module> <---------------
  </modules>

您指定的名称然后指向其他 pom,它们在第一个运行时运行

【讨论】:

Re "找到需要先运行的p​​om" – 模块构建顺序由Maven reactor计算。 &lt;module&gt; 声明的顺序只是五个排序标准中的最后一个。

以上是关于从一个命令运行多个 pom 文件的主要内容,如果未能解决你的问题,请参考以下文章

从 bash 脚本运行多个命令而不会失去控制

从命令行运行 maven+eclipse [重复]

Maven 命令 mvn 从终端运行没有错误,但从 python 运行没有错误

如何从 Bash 中的文件调用多个命令行参数?

在多个 Maven 项目上运行 Fortify 扫描

如何在RSpec中使用终端的单一命令运行多个规格文件?