2011-08-16 4 views
3

J'ai commencé à utiliser le plugin oreille maven il y a environ 12 mois et je veux savoir s'il existe des alternatives. L'un des avantages de Maven est la gestion de la dépendance, mais vous semblez presque complètement perdu avec le plugin d'oreille. Il construit tout le pot dépend de dans l'oreille, mais ne sera pas réellement mis l'un d'eux sur le chemin de classe avec en ajoutant la configuration ci-dessous:Comment faire pour que le plugin Maven EAR gère automatiquement le classpath pour les dépendances?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-ear-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <version>6</version> 
     <modules> 
      <ejbModule> 
       <groupId>com.mycompany.app</groupId> 
       <artifactId>MyApplication-ejb</artifactId>       
      </ejbModule> 

      <jarModule> 
       <groupId>axis</groupId> 
       <artifactId>axis</artifactId> 
       <bundleDir>lib</bundleDir> 
      </jarModule> 
      <jarModule> 
       <groupId>commons-discovery</groupId> 
       <artifactId>commons-discovery</artifactId> 
       <bundleDir>lib</bundleDir> 
      </jarModule> 
      <jarModule> 
       <groupId>axis</groupId> 
       <artifactId>axis-wsdl4j</artifactId> 
       <bundleDir>lib</bundleDir> 
      </jarModule> 
     </modules> 
    </configuration> 
</plugin> 

me manque quelque chose que je ne une version plus récente du plug-in d'éliminer la nécessité Pour cela, existe-t-il une alternative qui gère cela pour vous? Je ne peux pas croire chaque fois que j'ajoute une dépendance à un module que j'ai besoin de l'ajouter à la configuration de l'oreille pom. La chose la plus frustrante est même si je me souviens d'ajouter une bibliothèque dépendante à la configuration ci-dessus, si cela dépend à son tour d'autre chose (comme c'était le cas avec l'axe) que je découvre quand je déploie l'oreille.

+0

J'aime ton intuition: quand tu penses "sûrement qu'il y a un meilleur moyen", alors c'est presque toujours vrai. –

+1

Et par le manque d'une réponse utile après tout ce temps, nous pouvons seulement déduire qu'il n'y a pas de meilleure façon. –

+0

@DarrylMiles En fait, la réponse de khmarbaise fait très bien l'emballage. Quel est le problème avec sa réponse? –

Répondre

5

D'abord, vous devez disposer d'un module séparé pour l'oreille (et bien sûr l'oreille) qui ressemble à ce qui suit:

root 
    +-- client 
    !  +--- pom.xml 
    +-- service 
    !  +--- pom.xml 
    +-- ear 
     +--- pom.xml 

Deuxièmement, vous devriez mettre à jour la version du plug-in de l'oreille, provoquer la version actuelle est 2.6 . En outre, définissez vos pièces comme des dépendances

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-ear-plugin</artifactId> 
     <version>2.5</version> 
     </plugin> 
    </plugins> 
    </build> 

    <dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>webgui</artifactId> 
     <version>${project.version}</version> 
     <type>war</type> 
    </dependency> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>service</artifactId> 
     <version>${project.version}</version> 
     <type>ejb</type> 
    </dependency> 
    </dependencies> 

La configuration que vous utilisez est destinée aux bibliothèques tierces supplémentaires qui doivent être empaquetées.

1

En plus de la réponse de khmarbaise Je veux noter que pour que votre module EJB pour pouvoir accéder aux bibliothèques que vous devez le configurer pour inclure les dépendances à l'intérieur du META-INF/MANIFEST.MF comme ceci:

<plugin> 
    <artifactId>maven-ejb-plugin</artifactId> 
    ... 
    <configuration> 
     ... 
     <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
      </manifest> 
     </archive> 
    </configuration> 
    ... 
</plugin> 
Questions connexes