Utilização da saída do perito montador de encaixe como entrada para o plug-in

StackOverflow https://stackoverflow.com/questions/1445235

  •  22-07-2019
  •  | 
  •  

Pergunta

Eu tenho um número de projetos Maven que constroem vários componentes de uma estrutura de encaixe para uma aplicação 3rd party. Eu tenho um projeto principal, que, usando agregação ( elemento), inclui todos os subprojetos. Este projeto principal também chama o plugin assembler maven. agora eu posso construir todos os sub-projectos e têm copiar o montador suas saídas / arquivos / fontes / recursos etc em um diretório de construção mestre, e, em seguida, fechar todos esses arquivos se em um único zip de distribuição. Eu faço isso com o comando:

pacote mvn montagem: montagem

Isso tudo funciona muito bem. Agora eu quero passar esse arquivo zip em outro maven plugin que irá abri-lo e criar um arquivo de manifesto personalizado que lista o conteúdo zip e, em seguida, inserir este manifesto volta arquivo para o arquivo zip. Eu escrevi o plugin para fazer isso e ele funciona muito bem.

O meu problema é conseguir este plugin corrida pelo Maven como parte do processo de construção.

A necessidade de plugin a saída do assembler, mas não parece ser qualquer forma de execução de um plug-in após o assembler.

alguém pode ajudar?

Foi útil?

Solução

Assumindo que a montagem já foi definido para criar o assembly no alvo / conjuntos, você simplesmente precisa vincular a execução dos plugins para as fases do padrão de ciclo de vida , para que possa executar mvn install (por exemplo) e ter os plugins executados durante esse ciclo de vida.

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <id>generate-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <!--your configuration here -->
          ...
        </configuration>
      </execution>
    </executions>
  </plugin>

Você, então, se ligam a execução de seu plugin para uma fase posterior (digamos integração-teste), para que ele seja capaz de acessar os arquivos de montagem:

  <plugin>
    <groupId>your.plugin.groupId</groupId>
    <artifactId>your-artifactId</artifactId>
    <executions>
      <execution>
        <id>mung-manifests</id>
        <phase>package</phase>
        <goals>
          <goal>your-goal-name</goal>
        </goals>
        <configuration>
          <assemblyDirectory>${project.build.directory}/assemblies</assemblyDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

Usando essa abordagem cada plugin será executado na fase relevante (pacote) quando você executar mvn package (ou fase posterior, como instalar, verificar, deploy ...).

Note-se que o seu plugin deve ser definido após a montagem de encaixe para garantir que ele seja executado depois (não importa sobre a ordem se eles estão em diferentes fases, somente quando na mesma fase).

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