Utilização da saída do perito montador de encaixe como entrada para o plug-in
-
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 (
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?
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).