A implantação da unidade de embalagem com maven-libertação-plug-in
-
19-09-2019 - |
Pergunta
Nós usamos Hudson eo maven-release-plugin para fazer o compilações. Agora eu tenho um projeto que contém um montagem que reúne todos os componentes necessários e em seguida, os pacotes-los em um pacote .tar.gz com a estrutura do diretório desejado.
Agora eu estou tentando obter a liberação de plugins para implantar esse pacote para o nosso repositório Maven durante o lançamento:. Objectivo realizar, mas apenas o material padrão (fontes, javadoc, POM) são implantados
Eu já obrigado a meta de montagem para a fase de pacote maven, e .tar.gz recebe construir durante o lançamento, mas não fez upload para o repositório. Alguma dica que eu estou fazendo de errado aqui?
Aqui está a configuração de montagem-plugin:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/distribution.xml</descriptor>
</descriptors>
<finalName>${pom.artifactId}-${pom.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<tarLongFileMode>warn</tarLongFileMode>
</configuration>
<executions>
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
O comando eu corro para construir uma versão é
mvn release:prepare release:perform release:clean
Solução
Enquanto isso, eu encontrei 2 maneiras de fazer o que eu queria.
A-build-helper-plugin Maven permite adicionar entradas adicionais para a lista de artefatos que deve ser implantado:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>attach-distribution</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>target/${pom.artifactId}-${pom.version}.tar.gz</file>
<type>tar.gz</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
O outro é tão simples quanto ele ganha e alguém na lista de discussão do usuário maven apontou isso. simples uso da montagem: único objetivo em vez de asssembly: montagem. Desta forma, o artefato gerado é enviado para o repositório durante a fase de implementação.
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal> <!-- that's all :) -->
</goals>
</execution>
Outras dicas
A implantação de arquivos não é parte do plugin lançamento, mas do plugin deploy (release não implantar coisas em qualquer lugar, por si só, mas você pode configurar o plugin deploy para ser chamado durante um release).
Normalmente, o plugin implantar irá implantar todos os artefatos para o repositório remoto, mas os conjuntos não são artefatos; Maven não pode usar .tar.gz arquivos em seu repositório de qualquer forma, por isso não faz sentido para implantá-los em primeiro lugar.
Se você insistir para copiar arquivos inúteis para o repositório, você deve usar deploy:deploy-file
( veja a documentação ) para implantar um arquivo manualmente e configurar o plugin com uma execução para invocá-lo durante a fase de lançamento. Mas eu ainda aconselhar contra ele.
O que você provavelmente está procurando uma maneira de fazer upload de uma assembléia em algum lugar automaticamente. Eu não estou ciente de um plugin que faz isso.