Maven Aggregate POM con obiettivo?
Domanda
Ho una Maven POM che aggrega diversi moduli.
<project [stuff]>
<modelVersion>4.0.0</modelVersion>
<groupId>com.fuhu.osg</groupId>
<artifactId>UserManagement</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<name>UserManagement</name>
<modules>
<module>core</module>
<module>war</module>
<module>ejbs</module>
<module>ear</module>
</modules>
</project>
Voglio eseguire un obiettivo che non si applica ai moduli contro il POM-alto livello. Qualcosa di simile a mvn db-migrate: creo . Come è, sembra che questo tentativo per eseguire detto comando contro i sotto-progetti, che è corretta per ogni altro obiettivo, ma non per questo.
C'è un modo per fare un POM Maven che è sia un aggiunto per alcuni obiettivi e di un progetto comune per gli altri?
Soluzione
Si potrebbe essere aiutato da profili di build Maven. E 'facile da configurare un modulo ad essere invocate quando si utilizza un determinato profilo.
http://maven.apache.org/guides/introduction/ introduzione-to-profiles.html
...
<profiles>
<profile>
<id>db</id>
<modules>
<module>core</module>
</modules>
</profile>
<profile>
<id>all</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>core</module>
<module>war</module>
<module>ejbs</module>
<module>ear</module>
</modules>
</profile>
...
Inizia il vostro compito db con il profilo di db con qualcosa di simile:
$ mvn -Pdb db-migrate:create
attivazione automatica di profili è possibile utilizzando ambiente di sistema, ecc Purtroppo non riesco a trovare una proprietà Maven per il gol riga di comando, il che permetterebbe di attivazione automatica di un profilo quando viene eseguito questo obiettivo specifico.