Как заставить Maven развернуть артефакты для всех поддерживаемых архитектур одновременно? - PullRequest
3 голосов
/ 16 июня 2011

У меня есть вопрос, который, вероятно, очень похож на этот .Мне нужно решить то, что я представляю себе как довольно распространенную проблему - как настроить Maven для создания нескольких вариантов одного и того же артефакта - но мне еще предстоит найти хорошее решение.

У меня естьмультимодульный проект, в результате которого плагин assembly генерирует артефакт.Однако часть сборки включает библиотеки, которые существенно изменились в недавнем прошлом, в результате чего некоторым пользователям проекта требуется версия библиотеки N, а другим - версия N + 1.В идеале, мы просто должны автоматически генерировать несколько артефактов, например theproject-1.2.3.thelib-1.0.tar.gz, theproject-1.2.3.thelib-1.1.tar.gz и т. Д. (Где это версия 1.2.3 нашего проекта, работающая с библиотекой версии 1.0 или 1.1).

Rightтеперь у меня есть набор свойств по умолчанию, которые создаются для последней версии рассматриваемой библиотеки, а также профиль для создания старой версии.Я могу развернуть один или другой путь таким образом, но не могу развернуть оба в одной сборке.Вот ключевая проблема, которая отличается от приведенного выше вопроса: я не могу автоматизировать сборку один-один-убрать-другой- внутри плагина release.

Обычно мы'd mvn release:prepare release:perform из корня многомодульного проекта, чтобы позаботиться о развертывании всего на нашем внутреннем Nexus.Однако в этом случае мы должны выбрать один - либо запустить профиль старой библиотеки, либо запустить без и получить новый.Мне нужен плагин релиза для развертывания обоих .Это просто невозможно?Я должен представить, что мы не первые, кто хочет, чтобы наши автоматические сборки генерировали поддержку для разных платформ ....

1 Ответ

3 голосов
/ 16 июня 2011

Вы можете установить дополнительные артефакты с различными типами / классификаторами. Используйте attach-artifact цель build-helper-maven-plugin для достижения этой цели. Вот небольшой пример - мы устанавливаем установщики Windows и Unix продукта в виде файлов windows / exe и unix / sh. Эти файлы будут установлены в локальный репозиторий и развернуты в управлении дистрибуцией.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>install-installation</id>
            <phase>install</phase>
            <goals>
                <goal>attach-artifact</goal>
            </goals>
            <configuration>
                <artifacts>
                    <artifact>
                        <file>${basedir}/target/${project.artifactId}-${project.version}-windows.exe</file>
                        <classifier>windows</classifier>
                        <type>exe</type>
                    </artifact>
                    <artifact>
                        <file>${basedir}/target/${project.artifactId}-${project.version}-unix.sh</file>
                        <classifier>unix</classifier>
                        <type>sh</type>
                    </artifact>
                </artifacts>
            </configuration>
        </execution>
    </executions>
</plugin>

Надеюсь, это поможет.

...