изменить имя развернутого артефакта на основе профиля - PullRequest
11 голосов
/ 16 ноября 2010

У меня в pom-файле веб-приложения есть профиль сборки, который делает некоторые необходимые вещи (в моем коде) для проверки качества.

У меня есть этот код на SVN, и этот код скомпилирован в Hudson, который развертывает артефакты в Nexus ..

У Хадсона есть две работы, одна для профиля qa (-P qa) и одна для клиентов.

Мне нужно, чтобы я изменил в своем профиле qa имя артефакта на этапе развертывания, чтобы у nexus было два разных военных файла: один для qa и один для заказчика.

Я использую (после поиска в Google) следующее, которое, похоже, ничего не делает в hudshon!

    <profile>
        <id>qa</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.5</version>
                    <configuration>
                        <classifier>qa</classifier>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

есть идеи у кого-нибудь?

1 Ответ

13 голосов
/ 30 ноября 2010

На самом деле вам нужно установить параметр конфигурации «классификатор» для плагина, который создает разворачиваемый пакет: maven- (ear | ejb | jar | rar | war | shade) -plugin:

Например, чтобы построить WAR с классификатором qa, вы должны сделать следующее:

<profile>
    <id>qa</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <classifier>qa</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

Кроме того, вместо установки классификатора вы можете установить любой из следующих параметров (большинство по умолчанию - project.build.finalName, поэтому настройка этого свойства обновляет многие из них):

  • Общие
    • project.build.finalName
  • Плагин войны
    • warName
  • Ear | Jar | Rar | Shade Plugin
    • finalName
  • Плагин EJB
    • jarName

Последнее замечание: я никогда не осознавал этого раньше, но, глядя на документацию, похоже, что плагин RAR не поддерживает опцию «классификации». Shade поддерживает концепцию классификатора, но делает это с помощью свойства shadedClassifierName.

...