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 :

[Maven2][xdoclet-ejbdoclet] Pb sur un projet multi modules


Sujet :

Maven Java

  1. #1
    Membre régulier

    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 120
    Points
    120
    Par défaut [Maven2][xdoclet-ejbdoclet] Pb sur un projet multi modules
    Bonjour à tous !

    J'ai un problème que je n'ai pas encore réussi à résoudre malgrés de nombreuses tentatives. Je m'en remet à vous pour ce soir :

    J'ai un projet multi module contenant entre autres 3 ejb. J'utilise Xdoclet (ejbdoclet) pour générer les EJB mais j'ai le soucis suivant :

    -si je lance la generation des sources et la compilation séparémment pour chaque EJB, pas de pb.
    - si je lance la même tâche sur l'ensemble des modules, ça fonctionne très bien pour le premier EJB mais ça foire pour les suivants --> les classes générées le sont dans le target du premier EJB ! Et pourtant, les descripteurs de déploiement sont générés au bon endroit !

    Voici par exemple un pom d'un de mes artifact EJB :
    <?xml version="1.0" encoding="UTF-8"?>
    <project>
    <parent>
    <artifactId>MONARTIFACTPARENT</artifactId>
    <groupId>MONGROUPID</groupId>
    <version>1.0-0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>MONARTIFACTEJB</artifactId>
    <name>nom du module</name>
    <version>1.0-0-SNAPSHOT</version>
    <packaging>ejb</packaging>
    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ejb-plugin</artifactId>
    <configuration>
    <generateClient>true</generateClient>
    </configuration>
    </plugin>
    <plugin>
    <artifactId>xdoclet-maven-plugin</artifactId>
    <groupId>org.codehaus.mojo</groupId>
    <executions>
    <execution>
    <id>xdoclet3</id>
    <phase>generate-sources</phase>
    <goals>
    <goal>xdoclet</goal>
    </goals>
    <configuration>
    <tasks>
    <ejbdoclet

    destdir="${project.build.directory}/generated-sources/xdoclet"
    verbose="true"
    excludedTags="@author,@version" force="true"

    mergedir="${project.build.directory}/merge-dir">

    <fileset

    dir="${project.build.sourceDirectory}" includes="**/*.java" />

    <homeinterface />
    <localinterface />
    <localhomeinterface />
    <remoteinterface />

    <deploymentdescriptor

    destdir="${project.build.outputDirectory}/META-INF" />

    <jboss version="3.2"
    xmlencoding="UTF-8"

    destdir="${project.build.outputDirectory}/META-INF" />
    </ejbdoclet>

    </tasks>
    </configuration>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </build>
    </project>
    Visiblement, la variable ${project.build.directory} reste positionnée sur le premier MavenProject (celui du premier EJB), alors que ${project.build.outputDirectory} est bien mis à jour...

    J'ai essayé en sortant la partie configuration de la balise execution, en mettant la configuration dans le pom parent, mais j'ai systématiquement le même comportement.

    A force, je n'y vois plus rien, pouvez-vous m'aider ?

    Merci d'avance !
    Amicalement,
    Jibee.

  2. #2
    Membre régulier

    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 120
    Points
    120
    Par défaut
    Bonjour à tous !

    J'ai trouvé le moyen de faire fonctionner le tout, je rajoute l'attribut destdir à chaque interface :

    <homeinterface destdir="${project.build.directory}/generated-sources/xdoclet"/>
    <localinterface destdir="${project.build.directory}/generated-sources/xdoclet"/>
    <localhomeinterface destdir="${project.build.directory}/generated-sources/xdoclet"/>
    <remoteinterface destdir="${project.build.directory}/generated-sources/xdoclet"/>
    Ca ne me semble quand même être un bug, ou un comportement innatendu non ? qu'en pensez-vous ?

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 607
    Points : 671
    Points
    671
    Par défaut
    Oui, j'ai exactement le même bug, et je te remercie vraiment pour cette solution.

    Mais elle ne semble que partielle. Car les dépendances attribuées restent celles du premier EJB.

  4. #4
    Membre régulier

    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 120
    Points
    120
    Par défaut
    Hello !

    Peux-tu être plus précis quant aux autres pb que tu rencontres (dépendances) ?

    Merci !
    JB

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 607
    Points : 671
    Points
    671
    Par défaut
    J'ai trois projets à EJBs à générer en séquence depuis un projet services


    services
    --- A
    <dependencies>
    dependances requises pour compiler A
    </dependencies>

    ---- B
    <dependencies>
    dependances requises pour compiler B
    </dependencies>

    ---- C
    <dependencies>
    dependances requises pour compiler C
    </dependencies>


    Si j'exécute en trois commandes distinctes
    mvn A
    mvn B
    mvn C

    (mvn A = une simplification pour dire que je tape la commande: c:\A>mvn install) je n'aurais aucun problème.

    si je lance un
    mvn services
    je rencontre le problème que tu décris, mais ce n'est pas le seul.

    La génération des sources pour B et C, xdoclet la fera en mettant en ligne les dépendances de A, et non celles de B et C.


    voici le résultat d'un mvn B, qui se passe bien.
    [INFO] Initializing DocletTasks!!!
    [INFO] Executing tasks
    25 mai 2007 11:20:30 xdoclet.XDocletMain start
    INFO: Running <deploymentdescriptor/>
    25 mai 2007 11:20:31 xdoclet.XDocletMain start
    INFO: Running <remoteinterface/>
    Generating Remote interface for 'MonBean'.
    25 mai 2007 11:20:31 xdoclet.XDocletMain start
    INFO: Running <homeinterface/>
    Generating Home interface for 'MonBean'.
    25 mai 2007 11:20:31 xdoclet.XDocletMain start
    INFO: Running <jboss/>
    [INFO] Executed tasks


    Voici celui d'un mvn service, quand il arrive à la hauteur de la même génération, celle du projet B.
    [INFO] Initializing DocletTasks!!!
    [INFO] Executing tasks
    25 mai 2007 11:21:56 xdoclet.XDocletMain start
    INFO: Running <deploymentdescriptor/>
    25 mai 2007 11:21:56 xdoclet.XDocletMain start
    INFO: Running <remoteinterface/>
    Generating Remote interface for 'MonBean'.
    25 mai 2007 11:21:56 xdoclet.XDocletMain start
    INFO: Running <homeinterface/>
    Generating Home interface for 'MonBean'.
    25 mai 2007 11:21:56 xdoclet.XDocletMain start
    INFO: Running <jboss/>
    WARNING: Some classes refer to other classes that were not found among the sources or on the classpath.
    (Perhaps the referred class doesn't exist? Hasn't been generated yet?)
    The referring classes do not import any fully qualified classes matching these classes.
    Since at least one package is imported, it is impossible for xjavadoc to figure out
    what package the referred classes belong to. The classes are:
    MonBean --> InformationsClient qualified to services.InformationsClient

    [INFO] Executed tasks

    puis, il échouera ultérieurement dans la compilation, d'avoir fait un renommage de package qu'il ne fallait pas.

  6. #6
    Membre régulier

    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 120
    Points
    120
    Par défaut
    Ok merci pour tes précisions.
    En général, je met les dépendances dans le projet parent, voilà pourquoi je n'ai pas rencontré ton pb.

    @+

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 607
    Points : 671
    Points
    671
    Par défaut
    Le problème, c'est que ça ne me convient pas du tout.
    Je souhaite que chaque ejb ne voie strictement que ses propres dépendances pour pouvoir toujours réduire chacune au minimum.

    Après une recherche approfondie sur le net, je crois apprendre que ce problème ne vient pas de Maven 2, mais de XDoclet 1.2.3 qui a un bug. Voici un lien dessus, c'est le XDT-1505.

    Ce qui ne facilite pas la vie, c'est que XDoclet 1.2.3 n'est - à priori - plus maintenu depuis plus d'un an, car il semble qu'il serait remplacé par XDoclet 2, et un plugin pour les ejb serait disponible à ce titre, ici.


    Mais que le grand cric me croque si je sais comment le mettre en oeuvre,
    il existe bien une démonstration du lancement d'xdoclet, elle passe par ce déclencheur dans le fichier pom, très lourd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
            <plugin>
                <groupId>xdoclet</groupId>
                <artifactId>maven2-xdoclet2-plugin</artifactId>
                <version>2.0.5</version>
     
                <executions>
                    <execution>
                        <id>xdoclet</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>xdoclet</goal>
                        </goals>
                    </execution>
                </executions>
     
                <dependencies>
                    <dependency>
                        <groupId>xdoclet-plugins</groupId>
                        <artifactId>xdoclet-plugin-qtags</artifactId>
                        <version>1.0.4-SNAPSHOT</version>
                    </dependency>
                    <dependency>
                        <groupId>xdoclet-plugins</groupId>
                        <artifactId>xdoclet-taglib-qtags</artifactId>
                        <version>1.0.4-SNAPSHOT</version>
                    </dependency>
                </dependencies> 
                <goals>
                    <goal>xdoclet</goal>
                </goals>
                <configuration>
                    <configs>
                        <config>
                            <components>
                                <component>
                                    <!-- classname of the component -->
                                    <classname>org.xdoclet.plugin.qtags.impl.QTagImplPlugin</classname>
                                </component>
                                <component>
                                    <classname>org.xdoclet.plugin.qtags.impl.QTagLibraryPlugin</classname>
                                    <params>
                                        <packagereplace>org.xdoclet.plugin.${xdoclet.plugin.namespace}.qtags</packagereplace>
                                    </params>
                                </component>
                                <component>
                                    <classname>org.xdoclet.plugin.qtags.doclipse.QTagDoclipsePlugin</classname>
                                    <params>
                                        <filereplace>qtags.xml</filereplace>
                                        <namespace>${xdoclet.plugin.namespace}</namespace>
                                    </params>
                                </component>
                                <component>
                                    <classname>org.xdoclet.plugin.qtags.confluence.QTagConfluencePlugin</classname>
                                    <params>
                                        <destdir>${project.build.directory}/tag-doc</destdir>
                                        <namespace>${xdoclet.plugin.namespace}</namespace>
                                        <filereplace>${xdoclet.plugin.namespace}.confluence</filereplace>
                                    </params>
                                </component>
                            </components>
                            <includes>**/*.java</includes>
                            <params>
                                <destdir>${project.build.directory}/generated-resources/xdoclet</destdir>
                            </params>
                        </config>
                    </configs>
                </configuration>
             </plugin>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	<pluginRepositories>
    		<pluginRepository>
    		  <id>codehaus-plugins</id>
    		  <url>http://dist.codehaus.org/</url>
    		  <layout>legacy</layout>
    		  <snapshots>
    		    <enabled>true</enabled>
    		  </snapshots>
    		  <releases>
    		    <enabled>true</enabled>
    		  </releases>
    		</pluginRepository>   
    	</pluginRepositories>
    Mais j'ai eu beau chercher, je n'ai pas trouvé de documentation, et pas d'exemple concret disant comment utiliser l'ejb-plugin, générer des interfaces Home et Service.
    Je m'y suis certainement mal pris, mais je n'ai pas encore trouvé d'illustration pratique de l'emploi de ce plugin sur un code source.

  8. #8
    Membre régulier

    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 120
    Points
    120
    Par défaut
    De mon côté, j'ai fait un test avec Maven 2.0.6 et Xdoclet ne fonctionne plus du tout. Je suis repassé en 2.0.4 et ça remarche. Tu travailles avec quelle version de ton côté ?

    Pas mal de pb quand même avec xdoclet et maven...

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    607
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 607
    Points : 671
    Points
    671
    Par défaut
    J'ai essayé la 2.0.6 et elle ne marche pas, c'est vrai.
    La 2.0.5 ou la 2.0.4 fonctionnent.

    Mais c'est XDoclet 1.2.3 qui ne fonctionne pas bien.
    Je vais essayer un XDoclet 2, fût-il invoqué par un ant-run pour être sûr qu'il réussisse...

  10. #10
    Membre régulier

    Inscrit en
    Août 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Août 2006
    Messages : 93
    Points : 120
    Points
    120
    Par défaut
    Pour compléter ce vieux thread (désolé mais il me sert de mémo ), la solution aux pbs xdoclet/ejb avec maven 2.0.6 semble trouver sa solution dans la version de ant utilisée :

    http://www.nabble.com/Re%3A-maven-2....39377s177.html

    Il faut forcer l'utilisation de la version 1.6.5 de ant (par défaut, il me semble que c'est la 1.5.2).

    Testé chez nous (avec Maven 2.0.7) --> OK.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Bonjour à tous !

    Hum avec la version 2.0.8, il y a une régression la dessus car même en spécifiant la version de ant 1.6.5 à l'appel du plugin xdoclet dans un projet multimodule, les produits générés pour le deuxième module ejb partent dans le répertoire generated-sources du premier.

    Comme dit une haut, en maven 2.0.7 avec ant 1.6.5 précisé, aucune souci avec les même pom.

    A bientôt.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Bon ça marche en rajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <homeinterface destdir="${project.build.directory}/generated-sources/xdoclet"/>
    <localinterface destdir="${project.build.directory}/generated-sources/xdoclet"/>
    <localhomeinterface destdir="${project.build.directory}/generated-sources/xdoclet"/>
    <remoteinterface destdir="${project.build.directory}/generated-sources/xdoclet"/>
    comme dis plus haut.

    ça devient compliqué tout ça...

    Et je ne peux pas me passer de xdoclet 1 car j'utilise la task jonas

    A bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "inherit" sur le site d'un projet multi-modules
    Par PurpleOwl dans le forum Maven
    Réponses: 2
    Dernier message: 30/04/2008, 15h48
  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