В maven - как переименовать выходной файл .war на основе имени используемого профиля - PullRequest
34 голосов
/ 25 мая 2011

У меня есть три профиля в моем pom.xml для нашего приложения ...

  1. dev (для использования разработчиком)
  2. qa (для использования на нашем внутреннем сервере qa)
  3. прод (производство).

Когда мы запускаем нашу сборку maven, все три профиля выводят файл войны с одинаковым именем. Я хотел бы вывести $profilename-somearbitraryname.war

Есть идеи?

Ответы [ 3 ]

60 голосов
/ 25 мая 2011

Вы правильно ответили:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <rp.build.warname>dev</rp.build.warname>
        </properties>
    </profile>
    <profile>
        <id>qa</id>
        <properties>
            <rp.build.warname>qa</rp.build.warname>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <rp.build.warname>prod</rp.build.warname>
        </properties>
    </profile>
</profiles>

но есть более простой способ переопределить имя WAR:

<build>
    <finalName>${rp.build.warname}-somearbitraryname</finalName>
    <!-- ... -->
</build>

Нет maven-war-plugin необходимо.

25 голосов
/ 25 мая 2011

Ответ был прост ...

Определите свойство в каждом профиле следующим образом ...

<profile>
    <id>qa</id>
    <properties>
        <rp.build.warname>ourapp-qa</rp.build.warname>
    </properties>
</profile>

Затем добавьте это в свои плагины ...

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <packagingExcludes>WEB-INF/web.xml</packagingExcludes>
        <warName>${rp.build.warname}</warName>
    </configuration>
</plugin>
0 голосов
/ 23 ноября 2017

В Maven вы должны использовать <bundleFileName> в <module>

. Вы должны перейти по этой ссылке, чтобы убедиться, что ваши модули переписаны: http://maven.apache.org/plugins/maven-ear-plugin/examples/customizing-a-module-filename.html

 <build>
      <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>2.10.1</version>
                <configuration>
                 [...]
                    <modules>
                        <ejbModule>
                            <groupId>artifactGroupId</groupId>
                            <artifactId>artifactId</artifactId>
                            <bundleFileName>anotherName-1.2.3.jar</bundleFileName>
                        </ejbModule>
                    </modules>
                </configuration>
            </plugin>
        </plugins>
  </build>
...