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
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top