IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

[Conception Plugin] Analyse de projets multi-modules


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Par défaut [Conception Plugin] Analyse de projets multi-modules
    Bonjour à tous,

    Je vous explique d'abord le contexte avant de vous poser plusieurs questions.

    Je travaille actuellement sur un projet de développement de plugin Maven 2. Le plugin disposera en particulier d'un goal run, qui devra analyser les POM des différents modules d'un projet Maven quelconque.

    Le concept de base du goal run est qu'il devra être lancé qu'une seule fois à partir du module parent (de plus haut niveau). Le plugin ne devra donc pas être éxecuté sur l'ensemble des modules fils (ce qui n'est pas le comportement par défaut de Maven).

    Pur faire cela, j'ai lu la documentation de Maven, et deux options me semblent intéressantes : @aggregator et @inheritByDefault false.

    Voici les questions que je me pose :

    1) L'une de ce 2 options est-elle appropriée à mon problème ?
    2) Je n'ai pas cerné la différence entre ces 2 options. Quelle est-elle ?


    Ensuite, j'ai un autre problème.
    Dans le code source de mon Mojo run, j'ai mis ceci pour récupérer le projet Maven en cours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         /**
         * @parameter expression="${project}"
         */
        protected MavenProject project;
    Toujours dans le contexte d'un projet multi-module et du goal run lancé une seule fois, le problème est que la variable 'project' contient le POM parent.

    3) Comment accède-t-on aux POM des modules fils ? (ou comment récupérer des variables de type MavenProject correspondant au mapping des fichiers POM fils)

    Voila.
    Merci d'avance pour vos réponses.

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Par défaut
    Je pense avoir trouvé réponse à mes questions :

    Pour récupérer les projets fils :
    project.getCollectedProjects();

    J'ai l'impression que Aggregator est plus adapté. Mais je veux quand même bien votre avis sur la question.

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2007
    Messages : 84
    Par défaut
    Mon avis sur les différences entre aggregator et inheritedByDefault.

    aggregator
    Un plugin aggregator ne sera lancé qu'une fois par réacteur, et permet d'en centraliser l'exécution et les résultats.

    inheritedByDefault aura comme effet que tout module ayant un tag <parent> référençant un pom ayant ton plugin configuré aura ce même plugin configuré (pratique par exemple pour définir le maven-eclipse-plugin dans un super pom, et ne plus devoir le faire dans aucun autre pom ayant ce super pom comme ancêtre).

    Pour accéder aux projets enfants, j'ai plutôt habitude d'utiliser les reactor projects, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /**
         * If the executed project is a reactor project, this will contains the full
         * list of projects in the reactor.
         *
         * @parameter expression="${reactorProjects}"
         * @required
         * @readonly
         */
        protected List<MavenProject> reactorProjects;
    Mais j'imagine que getCollectedProjects() doit réaliser plus ou moins la même chose.

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Par défaut
    Merci pour l'explication.
    De plus, j'ai testé "reactorProjects", cela marche aussi.
    Mais il y a quand même une différence avec getCollectedProjects().

    En appelant getCollectedProjects(), on récupère uniquement les projets fils.
    En utilisant "reactorProjects", on récupère les projets fils, mais aussi le projet actuel.

    Par contre, j'ai une autre question.
    Dans le livre "Maven, the definitive guide", j'ai lu :
    "Aggregator is slated for deprecation in a future release of Maven".

    Pourquoi ?

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2007
    Messages : 84
    Par défaut
    Si je me souviens bien, c'est parce que certains développeurs de Maven sont insatisfaits du fonctionnement actuel, et proposent de réimplémenter le tout.

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Par défaut
    OK, merci de satisfaire ma curiosité

  7. #7
    Membre averti
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Par défaut
    En fait, je n'avais pas vu, mais quand on fait un goal aggregate et qu'on le lie au cycle de vie d'un projet Maven multi-module, le goal est appelé sur tous les projets fils, même si le goal est aggregate.

    Comment faire pour que le goal ne soit lancé que sur le module parent, alors qu'on a lié le goal au cycle de vie du module ?

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/04/2008, 14h42
  2. Projet multi-modules, génération de la javadoc
    Par hel22 dans le forum Maven
    Réponses: 2
    Dernier message: 14/11/2007, 11h39
  3. Réponses: 7
    Dernier message: 03/04/2007, 01h10
  4. [Continuum] projet multi-modules +authentification serveur
    Par rseM2 dans le forum Intégration Continue
    Réponses: 13
    Dernier message: 15/02/2007, 17h28
  5. BUILD ERROR sur création d'un projet multi-modules
    Par elitost dans le forum Maven
    Réponses: 1
    Dernier message: 28/08/2006, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo