2008-12-17 10 views
4

Nous avons un assez grand groupe de projets Maven2, avec un fichier POM racine listant plus de 10 modules et beaucoup de propriétés utilisées par les modules (numéros de version de dépendance, configuration de plugin, dépendances communes, etc.). Certains modules sont, comme le projet racine, les parents d'autres ensembles de modules.Avec les projets Maven multi-modules, est-il possible de rendre mon projet root (pom-packaged) disponible dans Eclipse?

Pour clarifier, le projet racine et lesdits projets parents sont configurés pour l'empaquetage pom (par opposition à par exemple jar). Comme il existe de nombreuses dépendances entre les différents projets, j'aime utiliser mvn eclipse: eclipse sur le projet racine, ce qui me permet de déboguer/avancer dans n'importe quel projet à tout moment. Toutefois, avec cette approche, le POM racine lui-même et tous les autres projets POM-packagés ne sont pas disponibles dans Eclipse. Donc, si je veux les éditer, je dois les ouvrir d'une autre manière. Cela devient un peu compliqué. Donc, ma question est la suivante: est-il possible de rendre les projets pom-packagés disponibles dans Eclipse? Si non, avez-vous des conseils qui pourraient faciliter mon travail avec ces projets?

Pour l'anecdote, j'utilise actuellement MyEclipse 7.0.

+0

Je serai seulement downvoted si je dis cela comme une réponse: Les deux netbeans et intellij Idea ont maintenant l'intégration * functional * maven de sorte que vous pouvez directement ouvrir le projet de la racine pom. – krosenvold

+0

Je vous remettrais en question si vous mettez cela dans une réponse :) –

Répondre

2

J'ai encore essayé ceci, avec Galileo et la dernière version de m2eclipse. Il est maintenant possible d'importer des projets Maven directement (sans mvn eclipse: eclipse), et il s'avère que le POM racine est aussi importé en tant que projet, ce qui est exactement ce que je voulais.

0

Vous pouvez essayer d'écrire une tâche pour créer manuellement le fichier .project pour chaque projet POM dans son répertoire. Je ne sais pas sur les détails, mais vous pouvez générer quelque chose comme:

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
     <name>${project.name}</name> 
     <comment></comment> 
     <projects> 
     </projects> 
     <buildSpec> 
     </buildSpec> 
     <natures> 
     </natures> 
</projectDescription> 

dans le répertoire racine du projet et il devrait être correct. Je ne suis pas sûr que cela vous empêcherait d'importer les projets enfants dans eclipse (comme vous le savez probablement - vous devez d'abord importer tous vos projets non-pom et ensuite créer des projets "généraux" pour le autres, avec le chemin correspondant au chemin physique sous la structure mvn). Eclipse vous empêchera de créer un projet à l'intérieur d'un autre, donc s'il reconnaît quelque chose de plus haut dans la hiérarchie du projet, vous serez dirigé vers le passé.

0

J'ai réussi à travailler avec codehaus eclipse plugin avec des projets maven ayant des parents. Le plugin a quelques défauts, mais dans l'ensemble, il est maintenu et vous devriez être en mesure de s'entendre avec lui.

1

Bien. Beaucoup de gens le font en faisant du parent POM un projet frère et en ayant un simple réacteur POM à la racine. Cependant, cela peut causer des problèmes avec la génération de site Web et le plugin de version, car ni l'un ni l'autre ne supporte ce mode aussi complètement qu'on le voudrait. Un gros problème que nous avons souvent est que les gens essaient d'extraire le tronc à l'aide de Subclipse, qui ajoute un fichier .project dans la racine, ce qui empêche ensuite l'importation de projets au-dessous de ce niveau. Au lieu de cela, nous devons aller à l'extérieur pour vérifier, puis importer les projets.

J'ai entendu la rumeur que Subversive pourrait mieux gérer les projets imbriqués, ce qui est vraiment le problème ici. A part ça, je n'ai pas de solution absolue ici.

0

Généralement, je n'ai vraiment besoin que du parent disponible en eclipse pour ajouter des dépendances et utiliser le formatage XML.Le moyen bon marché et gai est de créer un projet de ressources et de lier le pom parent à celui-ci. Fichier -> Nouveau -> Autre -> Général -> Fichier -> avancé

Si vous utilisez la version 2.8+ du plugin eclipse, vous pouvez l'utiliser pour générer le lien pour vous dans chacun de vos sous-projets, par ex.

<plugin> 
    <artifactId>maven-eclipse-plugin</artifactId> 
    <version>2.8-SNAPSHOT</version> 
    <configuration> 
     <linkedResources> 
      <linkedResource> 
       <name>parent.xml</name> 
       <type>1</type> 
       <location>${basedir}/${parent.relativePath}</location> 
      </linkedResource> 
     </linkedResources> 
    </configuration> 
    </plugin> 

Bien que vous aurez besoin actuellement de le vérifier de la subversion et de construire vous-même car il ne semble pas résoudre à partir et centrale.

svn co http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-eclipse-plugin/ 
cd maven-eclipse-plugin 
mvn clean install 
0

En fait, si vous ne voulez pas dépendre de m2eclipse, la « bonne » façon de le faire est d'utiliser un flat project layout (comme le problème est que Eclipse ne supporte pas les projets imbriqués).

+0

A partir d'Eclipse 4.5.M5 (Mars M5, sorti en mars), Eclipse prend désormais en charge une vue hiérarchique des projets dans l'Explorateur de packages: https: //www.eclipse. org/eclipse/news/4.5/M5/# nested-projets – Mickael

Questions connexes