Maven - вызов модуля из родительского POM на основе профиля - PullRequest
1 голос
/ 17 февраля 2011

У меня есть модуль, который должен производить два артефакта (войны). Единственная разница между двумя WAR-файлами - это используемый web.xml.
Я сделал это с помощью Maven Profiles ...

<parent>
    <artifactId>com</artifactId>
    <groupId>myProj</groupId>
    <version>1.0</version>
</parent>

<groupId>myProj.module1</groupId>
<artifactId>module1</artifactId>
<version>1.0</version>
<packaging>war</packaging>

<profiles>

    <profile>
        <id>module1</id>
        <build>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <warName>module1</warName>
                    <webXml>src\main\webapp\WEB-INF\web_module1.xml</webXml>
                </configuration>
            </plugin>
            </plugins>
        </build>
    </profile>


    <profile>
        <id>module2</id>
        <build>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <warName>module2</warName>
                    <webXml>src\main\webapp\WEB-INF\web_module2.xml</webXml>
                </configuration>
            </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Q1: Как я могу вызвать это POM из super POM, чтобы оба профиля были активированы?
В2: Возможно ли установить оба сгенерированных артефакта в локальный репозиторий?

Спасибо!

1 Ответ

2 голосов
/ 17 февраля 2011

Если вы хотите активировать несколько профилей одновременно , вам просто нужно выполнить команду mvn ... -Pprofile1,profile2.

Однако в вашем случае это противоречит одному основному соглашению Maven, которое гласит, что one project = one artifact. Это означает, что вы не можете создать 2 WAR одновременно. Если вы активируете оба профиля, одна конфигурация maven-war-plugin будет заменена вторым профилем, а затем вы получите 1 WAR с одним web.xml.

Если вы хотите получить 2 WAR, решение состоит в том, чтобы использовать оверлей WAR (т.е. вторая война - это другой проект, который зависит от войны # 1), или запустить две отдельные команды Maven, по одной на профиль .

...