Implantando o artefato Maven em vários repositórios com diferentes configurações
Temos inúmeros projetos Java, que são CI construídos com o Jenkins. Estes são implantados em nosso próprio servidor Nexus muito bem. O problema é que precisamos fornecer essas bibliotecas para terceiros, mas sem o código-fonte. Então, para cada projeto, no Nexus, temos:
Lançamentos repositório para nossos desenvolvedores (inclui código-fonte implementado)Instantâneos repositórios para nossos desenvolvedores (inclui código-fonte implementado)Versão de terceiros repositório (apenas JAR + POM)(e seria bom ter):Instantâneo de terceiros repositório (somente JAR + POM) para construções noturnas de terceirosA questão é: como isso geralmente é tratado no mundo Jenkins / Nexus? Eu prefiro ter um único Job no Jenkins que lide com o build de CI e o processo de release (implantação de artefato) "automaticamente". Atualmente estou usando vários<distributionManagement>
perfis em nossa "raiz principal pom.xml" (incluído por todos os projetos):
[...]
<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>
A partir dos documentos do Maven, parece que não há como usar vários repositórios durante o mesmo ciclo de vida de construção, sem mencionar o fato de que precisamos / não precisamos da fonte com base no repositório de destino.
Eu posso fazer um truque com a criação de um trabalho em Jenkins, com o Maven "Metas e opções":clean deploy -P third-party
e, em seguida, adicionando a ação Pós-compilação - "Implantar artefatos no repositório Maven" com os dados "padrão" - mas, neste caso, apenas os SNAPSHOTs estão indo para o repositório e para os artefatos lançados viaPlug-in de lançamento do Jenkins Maven estão entrando em apenas um repositório.
Alguma idéia prática de como posso fazer isso sem complicar demais a hierarquia de tarefas de IC?
Desde já, obrigado!