【发布时间】:2017-02-19 23:04:41
【问题描述】:
我有两个不同的复杂构建任务,必须由 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>
create-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>
create-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。
另一个解决方案是 composition,方法是从 create-war.xml 运行 create-jar.xml。我不确定我该怎么做。但我认为 maven-invoker 或 maven-antRun 插件会有所帮助。
我很乐意帮助我。
【问题讨论】:
-
我理解的是你需要一个多模块构建
-
请说明您的 WAR 是否应包含 JAR。如果您的场景确实是“构建一个 JAR,然后构建一个包含该 JAR 的 WAR”——您很可能不是第一个遇到这种情况的人。
-
我会尝试将此添加到您的 create-war.xml
<modules> <module>main</module> <module>create</module> </modules>
标签: java maven pom.xml parent-pom