Question

I ai un POM Maven qui regroupe plusieurs modules.

<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>

Je veux exécuter un objectif qui ne s'applique pas aux modules contre le haut niveau POM. Quelque chose comme mvn db-migrate: créer . Comme il est, il semble que cette tente d'exécuter ladite commande contre les sous-projets, ce qui est correct pour tous les autres objectifs, mais pas pour celui-ci.

Y at-il un moyen de faire un POM Maven qui est à la fois un agrégat pour certains objectifs et un projet ordinaire pour les autres?

Était-ce utile?

La solution

Vous pourriez être aidé par des profils de build Maven. Il est facile de configurer un sous-module à invoquer lors de l'utilisation d'un certain profil.

http://maven.apache.org/guides/introduction/ l'introduction à 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>
...

Commencez votre tâche db avec le profil db avec quelque chose comme:

$ mvn -Pdb db-migrate:create

Activation automatique des profils est possible en utilisant l'environnement du système, etc. Je ne peux malheureusement pas trouver une propriété Maven pour l'objectif de ligne de commande, ce qui permettrait à l'activation automatique d'un profil lorsque cet objectif spécifique est exécuté.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top