Развертывание артефакта Maven в нескольких хранилищах с различными настройками
У нас есть множество Java-проектов, созданных с помощью Jenkins. Они развернуты на нашем собственном сервере Nexus просто отлично. Проблема в том, что мы должны предоставить эти библиотеки третьей стороне, но без исходного кода. Итак, для каждого проекта в Nexus мы имеем:
релизы репозиторий для наших разработчиков (включает развернутый исходный код)моментальные снимки репозитории для наших разработчиков (включая развернутый исходный код)Сторонний релиз хранилище (только JAR + POM)(и было бы хорошо иметь):Снимок третьей стороны репозиторий (только JAR + POM) для ночных сборок сторонних производителейВопрос в том, как это обычно делается в мире Jenkins / Nexus? Я бы предпочел иметь одну работу в Jenkins, которая обрабатывает сборку CI и процесс выпуска (развертывания артефактов) «автоматически». В настоящее время я использую несколько<distributionManagement>
профили в нашем "основном корне pom.xml" (включены во все проекты):
[...]
<profiles>
<profile>
<id>default</id>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release</name>
<url>http://path/to/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://path/to/nexus/content/repositories/snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
</profile>
<profile>
<id>third-party</id>
<distributionManagement>
<repository>
<id>releases</id>
<name>Release</name>
<url>http://path/to/nexus/content/repositories/third-party/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://path/to/nexus/content/repositories/third-party-snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
</profile>
</profiles>
Из документов Maven кажется, что нельзя использовать несколько репозиториев в течение одного жизненного цикла сборки, не говоря уже о том, что нам нужен / не нужен источник, основанный на целевом репо.
Я могу сделать трюк с созданием Job в Дженкинс, с Maven "Цели и варианты":clean deploy -P third-party
и затем добавление действия Пост-сборки - «Развертывание артефактов в репозитории Maven» с данными «по умолчанию» - но в этом случае только SNAPSHOT отправляются как в репозиторий, так и в артефакты, выпущенные черезПлагин Jenkins Maven Release собираются в один репозиторий только.
Любые практические идеи, как я могу сделать это, не усложняя нашу иерархию работы CI?
Заранее спасибо!