Подтвердить что ты не робот

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

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

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

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

Любые идеи?

4b9b3361

Ответ 1

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

<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.

Ответ 2

Ответ прост...

Определите свойство в каждом профиле, как это...

<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>

Ответ 3

В 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>