在父pom中多次构建多个模块

时间:2016-02-08 22:01:17

标签: maven build maven-3 build-process

有许多应用程序需要从许多模块构建和打包。

在父pom中,我使用配置文件为不同的应用程序调用构建。

root
  parent/
     pom.xml
  moduleA/
     pom.xml
  moduleB/
     pom.xml
  moduleC/
     pom.xml

例如,app" profile-1"需要构建现有模块的子集并将其组合为tar球。 tar将包含几个jar和从目标/子模块中提取的不同配置文件。

我使用exec-maven-plugin调用的shell脚本将tar放在一起。

我面临的问题是,在一个应用程序中,我需要多次构建相同的模块,但使用不同的maven参数。

这样做的最佳方式是什么?

<profiles>
        <profile>
            <id>profile-1</id>
            <modules>
                <module>../moduleA</module>
                <module>../moduleB</module>
                <!-- <module>../moduleC</module> -->
            </modules>
            <properties>
                <global.version>0.0.1-SNAPSHOT</global.version>
            </properties>
            <build>
                <!-- use maven exec plugin to run a shell script which generates the tar ball picking jars and config files from different modules target dirs -->
                <plugins>
                </plugins>
            </build>
        <profile>
</profiles>

示例子模块pom

<groupId>com.test</groupId>
    <artifactId>moduleC</artifactId>
    <packaging>bundle</packaging>
    <version>${global.version}</version>

    <name>test :: ${project.artifactId} :: ${name} </name>


    <parent>
      <groupId>com.test</groupId>
      <artifactId>parent</artifactId>
      <version>${global.version}</version>
      <relativePath>../parent</relativePath>
    </parent>

我尝试的事情:
1)我可以分成多个配置文件并将其作为-Pprofile-1,profile-2调用吗?
它不适合我,但我会做错事。

2)使用另一个具有mvn命令行的shell脚本以不同的方式构建moduleC - 即使我传入&#34; -Dglobal_version&#34;,从mvn命令行运行的moduleC似乎也没有在存储库中找到父文件。

我试过做一个&#34; -N&#34;在构建应用程序之前构建将父pom放入存储库但没有帮助。

1 个答案:

答案 0 :(得分:0)

最好的方法是:

mvn clean install --projects moduleA, moduleB
mvn clean install --projects moduleB, moduleC

您无法使用maven(see this stackoverflow question

运行多个版本