ModuleB | -6ren">
gpt4 book ai didi

java - 如何通过 pom.xml 将 maven "--also-make"选项传递到命令行

转载 作者:行者123 更新时间:2023-11-30 01:57:46 27 4
gpt4 key购买 nike

假设有一个父项目 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>

最佳答案

--also-make 选项可以在指定的项目也列在聚合器( react 器)pom.xml 的模块部分中时使用。由于您的模块部分中没有所需的项目,因此您无法在当前设置中使用它。

您只需将额外的项目添加到当前的模块部分即可解决您的问题。 (你不必担心你编写的模块的顺序,Maven 会按照正确的顺序为你构建它们。而且你不必使用also-make)

您还可以使用您在问题中建议的解决方案。它不一定是 C 的父级,它可以只是 C 及其依赖项的聚合器。(我认为这是不必要的。您可以将它们全部添加到当前模块部分)

还有parent pomaggregator pom是不同的概念。

关于java - 如何通过 pom.xml 将 maven "--also-make"选项传递到命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804998/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com