Использование нескольких файлов 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>
Мне нужно вызвать mvn install обоих файлов pom одной командой. Орден действительно важен для меня, так как create-jar должен работать до create-war.
Есть два подхода.
Первое наследование. Используя create-jar.xml в качестве прямого родителя create-war.xml, поэтому при запуске create-war вызывается create-jar.
Другое решение - это компоновка путем запуска create-jar.xml из create-war.xml. Я не уверен, как я могу это сделать. Но я думаю, что плагины maven-invoker или maven-antRun могут быть полезны. Я был бы рад помочь мне.
1 ответ
Проверьте этот пример проекта.
В основном вам понадобится родительский пом, который будет называть ваших двух детских помпонов.
Приведенный выше пример немного длинный, но он объяснит каждый шаг в терминах непрофессионала.