Java “如何通过maven”--也可以是;通过pom.xml到命令行的选项

Java “如何通过maven”--也可以是;通过pom.xml到命令行的选项,java,maven,pom.xml,Java,Maven,Pom.xml,假设有一个父项目a的pom.xml中有模块B和C Project A |-pom.xml |----------->ModuleB | |->pom.xml |----------->ModuleC | |->pom.xml <modules> <module>B</module> <module>C</m

假设有一个父项目a的pom.xml中有模块B和C

Project A
    |-pom.xml
    |----------->ModuleB
    |               |->pom.xml
    |----------->ModuleC
    |               |->pom.xml

<modules>
    <module>B</module>
    <module>C</module>
</modules>
项目A
|-pom.xml
|----------->模B
||->pom.xml
|----------->模数
||->pom.xml
B
C
模块C本身具有一些仅属于此子模块的依赖项。这个依赖项应该在模块C之前构建,所以我想在为C调用“mvn安装”时调用“-am”(-allow-make)选项

Maven正在远程执行,我只有pom文件。构建作业在远程Jenkins上运行,它使用项目A父pom中的当前配置文件,只能使用此配置文件

我想它可以在模块C的pom中完成,比如在maven编译器插件的配置中

    <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>

org.apache.maven.plugins
maven编译器插件
${jdk.source}
${jdk.target}
**-上午**
我还考虑过创建另一个pom.xml,使其仅具有子模块C和正确顺序的依赖项,并在父pom中使用它来代替当前的子模块C,但首先要尝试-am选项。此外,我现在不太明白该把这个新的pom放在哪里,因为我们已经处于家长A级别了

也许整个项目结构都应该重构,但这就是我现在所拥有的

Upd:以下是较少简化的当前项目结构

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>
A项目(B、C、D的maven父项目)
|-pom.xml
|----------->模B
||->pom.xml
|----------->文件夹
|----------->文件夹
|----------->模数
||->pom.xml
|----------->模块化
||->pom.xml
B
C
--当指定的项目也列在聚合器(reactor)pom.xml的模块部分时,也可以使用make选项。由于模块部分中没有所需的项目,因此无法在当前设置中使用它

您可以将额外的项目添加到当前模块部分,这将解决您的问题。(您不必担心编写模块的顺序,Maven会按照正确的顺序为您构建模块。您也不必使用make)

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


也有不同的概念

谢谢你的回复。很抱歉,我过于简化了项目结构。请参阅问题下方的更新。如果您谈论的是将依赖项添加到父项目pom,那么它就是这样工作的。但目前的挑战(这不取决于我)是将D只作为模块C的依赖项,并将其从项目A模块中排除(当然,这仍然会影响整个项目的构建)。据我所知,模块仅低于当前模块。考虑将依赖项D移动到下面的文件夹中,并为D&CAnyway创建一个公共聚合器,在物理移动模块D以创建公共聚合器之前,想知道还有哪些其他替代方案aggregator@nonrandom_passer您不必将其移动到其他文件夹。您可以在模块部分给出相对路径。(例如./。/B)@nonrandom_passer这也适用于父pom位置。父pom不必位于当前pom上方的一个文件夹中。您可以像../parent/pom.xml一样使用它。检查这个例子@nonrandom\u passer这是一个有效的解决方案。但最后,这与将D作为模块直接添加到A中没有什么不同。(如果你不能这样做,你可以这样做。)