如何通过 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是不同的概念。