2011-08-26 5 views
0

J'ai un projet Maven Java EE avec plusieurs modules.Profils Maven en modules

PROJECT 
--EJB 
--WEB1 
--WEB2 
--EAR 

Maintenant, je veux créer un profil qui compile et comprennent WEB1 et un profil qui comprennent à la fois

Pour exclure/inclure le module de la construction, j'inclure les recherchés sous-modules dans la principale pom .xml selon le profil sélectionné. Cela fonctionne bien.

Le problème réside dans les dépendances dans le module EAR. Comment exclure le module WEB1 ou WEB2? Redéfinir la partie des profils ne fonctionne pas.

La question est: Y at-il un moyen de contrôler les dépendances dans un module d'un projet, selon le profil sélectionné

EDIT:

Ma faute, je créer les balises dans la place que direct dans la racine

Répondre

-1

Il ya une question déjà posée comme ça dans le lien suivant. Peut-être qu'il aide:

Different dependencies for different build profiles in maven

+0

Je ne pense pas que ce soit vraiment la solution à mon problème. Lorsque j'inclus la dépendance WEB2 dans le pom principal, j'obtiens une référence cyclique (avant d'inclure les modules uniquement dans le pom EAR). Les deux projets web ont des références au projet EJB (mon vrai projet est plus compliqué, avec plus de modules pour JPA, DAO, FACADE, TO, 2xWEB, EAR ...) Je ne veux pas inclure les dépendances dans le projet principal , mais seulement dans l'EAR selon le (s) profil (s) sélectionné (s) Merci de votre aide – Yves

4

Exclusion des modules basés sur les profils n'est pas possible, mais l'inclusion fonctionne avec l'utilisation de la fonction spéciale de 'combine.children' depuis Maven 3.0.2, décrit dans http://www.sonatype.com/people/2011/01/maven-how-to-merging-plugin-configuration-in-complex-projects/

Alors vous devez définir le contenu minimal d'EAR par défaut et avec les profils ajouter des dépendances/modules de la manière suivante dans votre module d'oreille:

<project ....> 
    ... 
    <name>EAR</name> 
    ... 
    <dependencies> 
     <dependency>EJB</dependency> // specify groupId, artifactId, version, type ... 
     <dependency>WEB1</dependency> 
    </dependencies> 
    <profiles> 
     <profile> 
      <id>build-with-WEB2</id> 
      <dependencies> 
       <dependency>WEB2</dependency> // specify groupId, artifactId, version, type ... 
      </dependencies> 
      <build> 
       <plugins> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-ear-plugin</artifactId> 
        <version>${maven-ear-plugin.version}</version> 
        <configuration> 
         <modules combine.children="append"> 
          <webModule> 
           <groupId>...</groupId> 
           <artifactId>WEB2</artifactId> 
           <bundleFileName>WEB2.war</bundleFileName> 
           ... 
          </webModule> 
         </modules> 
        </configuration> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
    <build> 
     ... 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>${maven-ear-plugin.version}</version> 
       <configuration> 
        ... 
        <modules> 
         <ejbModule> 
          <groupId>...</groupId> 
          <artifactId>EJB</artifactId> 
          <bundleFileName>EJB.jar</bundleFileName> 
          ... 
         </ejbModule> 
         <webModule> 
          <groupId>...</groupId> 
          <artifactId>WEB1</artifactId> 
          <bundleFileName>WEB1.war</bundleFileName> 
          ... 
         </webModule> 
        </modules> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project>