如何通过 pom.xml 将 maven“--also-make”选项传递给命令行
How to pass maven "--also-make" option via pom.xml to command line
假设有一个父项目 A,其 pom.xml 中包含模块 B 和 C。
Project A
|-pom.xml
|----------->ModuleB
| |->pom.xml
|----------->ModuleC
| |->pom.xml
<modules>
<module>B</module>
<module>C</module>
</modules>
模块 C 本身有一些只属于这个子模块的依赖。此依赖项应在模块 C 之前构建,因此我想在为 C 调用 "mvn install" 时调用“-am”(--also-make)选项。
Maven正在远程执行,我只有pom文件。构建作业在远程 Jenkins 上运行,它使用项目 A 父 pom 中的当前配置文件,只能使用此配置文件。
虽然它可以在模块 C 的 pom 中完成,例如在 maven-compiler-plugin 的配置中?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.source}</source>
<target>${jdk.target}</target>
**<arguments>-am</arguments>** <!--smth like this maybe?-->
</configuration>
</plugin>
我还考虑过创建另一个 pom.xml 以仅以正确的顺序包含子模块 C 及其依赖项,并用于代替父 pom 中的当前子模块 C,但想先尝试 -am 选项.此外,我现在不太明白把这个新的pom放在哪里,因为我们已经在父A级了。
可能应该重构整个项目结构,但这是我目前拥有的。
更新:下面是不太简化的当前项目结构。
Project A (maven parent for B, C, D)
|-pom.xml
|----------->ModuleB
| |->pom.xml
|----------->folder
|----------->folder
|----------->ModuleC
| |->pom.xml
|----------->ModuleD
| |->pom.xml
<modules>
<module>B</module>
<!-- <module>D</module> | initially was here, now needs to be only C's dependency -->
<module>C</module>
</modules>
--当指定的项目也列在聚合器(反应器)的模块部分时,也可以使用 make 选项 pom.xml。由于您的模块部分中没有所需的项目,因此您不能在当前设置中使用它。
您可以将额外的项目添加到当前模块部分,这将解决您的问题。 (您不必担心您编写的模块的顺序,Maven 会以正确的顺序为您构建它们。而且您不必使用 also-make)
您也可以使用您在问题中建议的解决方案。它不必是 C 的父级,它可以只是 C 及其依赖项的聚合器。(我认为这不是必需的。您可以将它们全部添加到当前模块部分)
还有parent pom and aggregator pom是不同的概念。
假设有一个父项目 A,其 pom.xml 中包含模块 B 和 C。
Project A
|-pom.xml
|----------->ModuleB
| |->pom.xml
|----------->ModuleC
| |->pom.xml
<modules>
<module>B</module>
<module>C</module>
</modules>
模块 C 本身有一些只属于这个子模块的依赖。此依赖项应在模块 C 之前构建,因此我想在为 C 调用 "mvn install" 时调用“-am”(--also-make)选项。
Maven正在远程执行,我只有pom文件。构建作业在远程 Jenkins 上运行,它使用项目 A 父 pom 中的当前配置文件,只能使用此配置文件。
虽然它可以在模块 C 的 pom 中完成,例如在 maven-compiler-plugin 的配置中?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jdk.source}</source>
<target>${jdk.target}</target>
**<arguments>-am</arguments>** <!--smth like this maybe?-->
</configuration>
</plugin>
我还考虑过创建另一个 pom.xml 以仅以正确的顺序包含子模块 C 及其依赖项,并用于代替父 pom 中的当前子模块 C,但想先尝试 -am 选项.此外,我现在不太明白把这个新的pom放在哪里,因为我们已经在父A级了。
可能应该重构整个项目结构,但这是我目前拥有的。
更新:下面是不太简化的当前项目结构。
Project A (maven parent for B, C, D)
|-pom.xml
|----------->ModuleB
| |->pom.xml
|----------->folder
|----------->folder
|----------->ModuleC
| |->pom.xml
|----------->ModuleD
| |->pom.xml
<modules>
<module>B</module>
<!-- <module>D</module> | initially was here, now needs to be only C's dependency -->
<module>C</module>
</modules>
--当指定的项目也列在聚合器(反应器)的模块部分时,也可以使用 make 选项 pom.xml。由于您的模块部分中没有所需的项目,因此您不能在当前设置中使用它。
您可以将额外的项目添加到当前模块部分,这将解决您的问题。 (您不必担心您编写的模块的顺序,Maven 会以正确的顺序为您构建它们。而且您不必使用 also-make)
您也可以使用您在问题中建议的解决方案。它不必是 C 的父级,它可以只是 C 及其依赖项的聚合器。(我认为这不是必需的。您可以将它们全部添加到当前模块部分)
还有parent pom and aggregator pom是不同的概念。