使用多个pom文件构建项目

时间:2016-10-11 11:55:17

标签: java maven pom.xml parent-pom

我有两个不同的复杂构建任务,必须由maven按顺序完成。例如,创建战争文件,库和...
据我所知,我必须将这些任务拆分为单独的maven pom文件。通过这种方法,每个pom文件都有一个特定的责任,我可以保持它们尽可能简单,最重要的是,由于一些技术问题,我必须这样做。
我将这两个文件之间的共享依赖项放在父pom文件中以减少重复。
在这种情况下,create-jar.xml和create-war.xml是任务,parent.xml包含共享依赖项。
parent.xml

<?xml version="1.0" encoding="UTF-8"?>
    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="http://maven.apache.org/POM/4.0.0"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

        <groupId>main</groupId>
        <artifactId>main</artifactId>
        <version>1.0</version>
        <packaging>pom</packaging>

        <dependencies>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.13</version>
            </dependency>
        </dependencies>

    </project>


创建-jar.xml中

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>main</artifactId>
        <groupId>main</groupId>
        <version>1.0</version>
        <relativePath>parent.xml</relativePath>
    </parent>
    <groupId>create</groupId>
    <artifactId>create</artifactId>
    <version>1.2-SNAPSHOT</version>
    <packaging>jar</packaging>
</project>


创建-war.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>main</artifactId>
        <groupId>main</groupId>
        <version>1.0</version>
        <relativePath>parent.xml</relativePath>
    </parent>
    <groupId>create-war</groupId>
    <artifactId>create-war</artifactId>
    <version>1.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

我需要的是通过一个命令调用两个pom文件的 mvn install 。订单对我来说非常重要,因为create-jar必须在create-war之前运行。
有两种方法。
第一个继承,通过使用create-jar.xml作为create-war.xml的直接父级,因此通过运行create-war,可以调用create-jar。
另一个解决方案是组合,方法是从create-war.xml运行create-jar.xml。我不知道怎么能这样做。但我认为maven-invoker或maven-antRun插件可能会有所帮助。 我很乐意帮助我。

1 个答案:

答案 0 :(得分:0)

检查sample project 基本上你需要一个父母pom,它会给你的2个孩子打电话 上面的例子有点长,但它们将解释外行人任期的每一步。