Использование нескольких файлов 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 ответ

Проверьте этот пример проекта.
В основном вам понадобится родительский пом, который будет называть ваших двух детских помпонов.
Приведенный выше пример немного длинный, но он объяснит каждый шаг в терминах непрофессионала.

Другие вопросы по тегам