2010-05-18 7 views
1

J'essaye de créer un projet eclipse à partir de zéro en utilisant le plugin m2eclipse pour aider à résoudre les dépendances.Eclipse + plugin m2eclipse + dépendances du module EAR

Le projet se compose des modules suivants:

test oreille test ejb test guerre

Les références de l'oreille deux autres projets, et les fichiers pom sont prêts et travailler dans chaque projet.

J'ai encore une situation donnée:

Au lieu de Maven construire mon projet, je veux être en mesure d'exporter l'oreille de l'éclipse et un projet de travail, pour que je puisse être en mesure de chaud déployer dans un serveur. Mais j'ai un problème ... l'ejb utilise un jar externe (jbpm), la dépendance est correctement spécifiée dans pom, et elle apparaît dans la définition de la librairie "Maven Dependencies", et je n'ai pas d'erreurs de compilation.

Mais pour exporter avec succès le fichier EAR, je dois ajouter le fichier jar (jbpm) au fichier manifeste ejb. Aller aux propriétés du projet "Dépendances du module Java EE" Je n'ai que l'entrée "Maven Dependencies" lib, et le sélectionner n'ajoutera aucune information au fichier manifeste. Après cela, l'exportation de l'EAR affichera les fichiers jar de dépendance dans la racine EAR, mais l'ouverture de l'EJB inclus montre que le manifeste n'a aucune entrée de chemin de classe.

Déployer l'EAR puis échoue avec des informations sur une ClassNotFoundException dans l'EJB, sur une classe qui est dans le jar de dépendance. Pour contourner cela, je peux inclure le jar dans le module EAR (project-> properties-> Dépendances du module Java EE), puis je peux l'ajouter dans l'EJB et le fichier manifeste est mis à jour en conséquence.

Mais le projet aura des tonnes de pots, et je ne veux pas les inclure tous à la main dans l'EAR, puis les choisir tous dans chaque projet.

Je sais que ces entrées sont dans le fichier .settings/org.eclipse.wst.common.component, mais ne devrait pas maven plugin le mettre à jour automatiquement dans le projet EAR? Au moins sur le module Java EE de dépendance, donc je pouvais vérifier les pots sur chaque sous-projet (ejb, guerre, ...)

Merci

Répondre

0

Si je vous comprends bien, vous voulez emballer tous les 3 libs de partie qui sont utilisées par vos EJB dans le fichier EAR résultant. Si votre projet EAR a le type de packaging ear et que les dépendances à vos modules EJB sont correctement spécifiées avec le type ejb, ces bibliothèques tierces doivent être automatiquement incluses dans le fichier EAR résultant. Vous pouvez également spécifier un répertoire lib personnalisé dans l'EAR.

Exemple:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>yourGroup</groupId> 
    <artifactId>test-ear</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <!-- We want the resulting artifact to be an .ear file --> 
    <packaging>ear</packaging> 

    <dependencies> 
     <!-- Internal dependencies --> 
     <dependency> 
      <groupId>yourGrup</groupId> 
      <artifactId>test-ejb</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
      <!-- We have an ejb dependency here - take care of it! --> 
      <type>ejb</type> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-ear-plugin</artifactId> 
       <configuration> 
        <version>5</version> 
        <!-- put all 3rd party libs into the lib directory --> 
        <defaultLibBundleDir>lib</defaultLibBundleDir> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Donc, cela ne devrait pas avoir quoi que ce soit avec M2e imo. Vous devrez peut-être mettre à jour la configuration du projet dans Eclipse.

Questions connexes