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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top