Como executar tarefas ordenadas no Maven2 Build
Pergunta
Estou tentando migrar um aplicativo Java construído pela ANT para o MAVEN2. Entre outros, a construção executa as seguintes operações:
Executando um documento Javadoc para encontrar arquivos java anotados para serem externalizados mais tarde como serviços da web
compilar uma pequena parte do código para a etapa 3
Execute o eixo java2wsdl no código compilado da etapa 2
Produza o código Java com WSDL2Java nos arquivos WSDL da Etapa 3
Compilar todo o código
Ao tentar "dificultar" o processo, posso realizar cada tarefa de cada vez, mas não conseguem alcançá -los todos nessa ordem.
Para demonstrar meu pom e não carregar você com detalhes, mostrarei o seguinte snippet:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.6.1</version>
<executions>
<execution>
<id>aggregate</id>
<phase>generate-sources</phase>
<goals>
<goal>aggregate</goal>
</goals>
<configuration>...</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>compileWSfiles</id>
<goals>
<goal>compile</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<includes>
<!-- include 3 source files -->
</includes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>axistools-maven-plugin</artifactId>
<version>1.3</version>
<dependencies>
<dependency>
<groupId>axis</groupId>
<artifactId>axis</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>java2wsdl</id>
<phase>generate-sources</phase>
<goals>
<goal>java2wsdl</goal>
</goals>
<configuration>...</configuration>
</execution>
<execution>
<id>wsdl2java</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>...</configuration>
</execution>
</executions>
</plugin>
</plugins>
O principal problema é que não tenho controle sobre a ordem das coisas e é obviamente importante aqui, pois cada saída de etapa é a próxima etapa.
Solução
Plugins ligados à mesma fase deveria estar executado na mesma ordem que estão listados no POM, mas ... há uma questão em aberto sobre isso (MNG-2258). Também dê uma olhada em um problema relacionado MNG-3719 (preste uma atenção especial a este comentário). Já que não acho que o "trapaceiro" de MNG-3719 é possível no seu caso, minha sugestão é tentar com o Maven 2.0.8 :( e cruzar os dedos para não enfrentar nenhuma regressão.