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 :

compilation a partir de deux repertoires de sources


Sujet :

Maven Java

  1. #1
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut compilation a partir de deux repertoires de sources
    Probleme :
    Dans mon projet j'ai mes sources .java dans le repertoire /src/java.
    J'ai un plugin Ant pour Maven2 qui me genere des classes .java dans un repertoire /generated/java a partir de fichirr xml.
    Comment faire pour que la compilation se fasse a partir de ces deux repertoires

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par DanielW33
    Probleme :
    Dans mon projet j'ai mes sources .java dans le repertoire /src/java.
    J'ai un plugin Ant pour Maven2 qui me genere des classes .java dans un repertoire /generated/java a partir de fichirr xml.
    Comment faire pour que la compilation se fasse a partir de ces deux repertoires
    A priori, la solution la plus simple (à mon sens) est de rebinder le plugin maven-compiler-plugin à la phase compile.
    De cette façon, il sera executé deux fois, une fois avec chaque repertoire source.

    Si tu as des problèmes pour mettre en place cette configuration, reposte ici

  3. #3
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    la solution la plus simple (à mon sens) est de rebinder le plugin maven-compiler-plugin à la phase compile

    Je ne vois pas ce que tu veux me faire faire :
    peux tu expliquer


    Voila ce sur quoi je travail :
    dans mon pom :
    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
     
    <build>
    	<sourceDirectory>src/java</sourceDirectory>
    <outputDirectory>..\dra.proto/out/${artifactId}/classes</outputDirectory>
     
    <plugin>
    	<groupId>org.apache.maven.plugins</groupId>
    	<artifactId>maven-compiler-plugin</artifactId>
    	<configuration>
    		<source>1.5</source>
    		<target>1.5</target>
    		 <includes>
    			<include>${project.build.outputDirectory}../../generated/java/**/*.java</include>
                            <include>**/*.java</include>
    		</includes>
    	</configuration>
    </plugin>

    l'arbo de mon projet

    /<project-root>
    |
    +- pom.xml
    |
    +- /src
    | |
    | +- /java
    | | |
    | | +-/[mes packages]('mes sources'.java) ( avec mes Bean )
    | | | |
    +- /generated
    | |
    | +- /java
    | | |
    | | +-/[mes packages]('mes sources générés'.java)


    J'ai vu qu'on peut egalement utiliser la balise <compileSourceRoots> comment peut on l'utiliser ( peux etre la fin de mes cauchemard )


  4. #4
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par DanielW33
    J'ai vu qu'on peut egalement utiliser la balise <compileSourceRoots> comment peut on l'utiliser ( peux etre la fin de mes cauchemard )
    En effet, elle existe, mais je sais pas comment elle fonctionne. A tout hasard, je dirais que c'est prévu pour Maven 2.1, mais pas encore.

    Pour ma part, je disais:
    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
     
    <build>
    	<sourceDirectory>src/java</sourceDirectory>
    <outputDirectory>..\dra.proto/out/${artifactId}/classes</outputDirectory>
     
    <plugin>
    	<groupId>org.apache.maven.plugins</groupId>
    	<artifactId>maven-compiler-plugin</artifactId>
    	<configuration>
    		<source>1.5</source>
    		<target>1.5</target>
    	</configuration>
    	<executions>
    		<execution>
    			<phase>compile</phase>
    			<goal>compile</goal>
    			<configuration>
    				<compileSourceRoots>generated/java</compileSourceRoots>
    			</configuration>
    		</execution>
    	</executions>
    </plugin>
    A des erreurs de syntaxe, ça devrait aller ça.....

  5. #5
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    c'st pas mal mais un autre probleme est soulevé :
    mes sources src/java ont besoin des sources generated/java et inversement

  6. #6
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par DanielW33
    c'st pas mal mais un autre probleme est soulevé :
    mes sources src/java ont besoin des sources generated/java et inversement
    Dépendances cycliques, c'est pas très bon ça....

    Alors là, je ne vois pas comment tu pourrais faire. Tu veux compiler les sources en même temps.....
    Euh, ben à part bidouiller le truc avec un peu de ant, je ne vois pas comment tu pourrais t'en sortir....

  7. #7
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    je vais donc me pencher sur une tache ant supplementaire dans mon plugin ant pour la compile des sources.
    Maintenant une autres petite question; comment peut on appele le path du compilateur javac.exe ( je voubrais connaitre la variable utilise pour maven)
    J'espere quer ma question n'est pas trop bete

  8. #8
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par DanielW33
    je vais donc me pencher sur une tache ant supplementaire dans mon plugin ant pour la compile des sources.
    Maintenant une autres petite question; comment peut on appele le path du compilateur javac.exe ( je voubrais connaitre la variable utilise pour maven)
    J'espere quer ma question n'est pas trop bete
    Euh, JAVA_HOME/bin ? Non, je pense que j'ai pas trop compris la question....

  9. #9
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    Ma question etait assez flou

    En fait je voulais savoir s'il y avais une variable ( du type ${basedir, ou ${project.build.directory},...),utilisable dans un fichier pom.xml.
    En fait j'ai la possibilité de creer un plugin ant pour la compilation de deux repertoires sources dufferents mais je pense devoir utiliser le path du compilateur javac.exe
    Si ce n'est pas assez clair je laisse tomber et je commence mon tricot

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 172
    Par défaut
    il n'est pas possible d'utiliser compileSourceRoots dans la conf du plugin car ce paramètre est read-only.

    Voici deux solution à ton pb:

    1. Tu crées une tache ant qui copie toutes tes sources java dans un repertoire (ex:target/sources) et tu configure le répertoire de tes sources dans ton pom vers ce répertoire

    2. tu crées un plugin qui attache ton répertoire de sources générés au compileSourceRoots utilisés par le plugin compile et qui ressemble à quelque chose comme celà:

    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
     
    public class AddSourcesDirectoryMojo
        extends AbstractMojo
    {
        /**
         * @parameter
         */
        private List sources;
     
        /**
         * @parameter expression="${project}"
         *
         * @required
         */
        private MavenProject project;
     
        public void execute()
            throws MojoExecutionException
        {
            if ( project != null && sources != null )
            {
                for ( Iterator i = sources.iterator(); i.hasNext(); )
                {
                    String sourceDirectory = (String) i.next();
                    project.addCompileSourceRoot( sourceDirectory );
                }
            }
        }
    }
    et la conf de ce plugin sera :
    <configuration>
    <sources>
    <source>generated/java</source>
    </sources>
    </configuration>

    Personnellement, je préfère la deuxième solution, surtout si tu as beaucoup de fichiers sources, et en plus il sera réutilisable.

  11. #11
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    Merci pour ces reponses. Je vais de ce pas essayer de faire le plugin

  12. #12
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    Citation Envoyé par evenisse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        
        /**
         * @parameter expression="${project}"
         *
         * @required
         */
        private MavenProject project;
    Peux tu me dire ce que c'est que cette classe ???

  13. #13
    Membre confirmé Avatar de morice.ju
    Inscrit en
    Avril 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2006
    Messages : 79

  14. #14
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par DanielW33
    Peux tu me dire ce que c'est que cette classe ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-project</artifactId>
        </dependency>

  15. #15
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    En fait, je ne vois pas ce qu'il faut faire :
    il faut que je puisse compiler mes sources ensemble puisuq'il y a interaction entre eux.
    De plus faire un nouveau Mojo me semble un peu complique.
    pourrai tu m'explique plus en detail pour mon probleme

  16. #16
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 172
    Par défaut
    Citation Envoyé par DanielW33
    En fait, je ne vois pas ce qu'il faut faire :
    il faut que je puisse compiler mes sources ensemble puisuq'il y a interaction entre eux.
    De plus faire un nouveau Mojo me semble un peu complique.
    pourrai tu m'explique plus en detail pour mon probleme
    Il n'est pas du tout compliqué de faire un mojo, surtout celui-ci (tu as quasiment tout le code ) et tu pourras le réutiliser pour tes autres projets, si tu en as besoin.
    Avec ce plugin, tout tes répertoires de sources pourront être ajoutés au répertoire de compilation et seront compilés ensemble.

  17. #17
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    Donc il faut que je mettes mon plugin compile a suivre ce plugin ?
    Je viens de creer mon Mojo et il a l'air de fonctionner.
    Maintenant je ne sais pas ( pas les dents ) comment lancer la compile sur ces repertoire

  18. #18
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 172
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 172
    Par défaut
    Citation Envoyé par DanielW33
    Donc il faut que je mettes mon plugin compile a suivre ce plugin ?
    Il faut que tu attaches ce plugin à une phase qui sera exécutée avant la phase de compilation.

  19. #19
    Membre éclairé Avatar de DanielW33
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2006
    Messages : 327
    Par défaut
    Bon ok mon plugin fonctionne tres bien

    mon probleme est

  20. #20
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par DanielW33
    Bon ok mon plugin fonctionne tres bien
    Pour info, il existe apparement déjà un plugin qui fait exactement ça:
    http://mojo.codehaus.org/build-helpe...gin/howto.html

    (connaissais pas)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Intégrer des données à partir de deux sources
    Par Fadwa89 dans le forum Pentaho
    Réponses: 1
    Dernier message: 10/12/2013, 14h08
  2. Réponses: 3
    Dernier message: 06/07/2012, 17h01
  3. Connexion internet à partir de deux sources
    Par yo_haha dans le forum Développement
    Réponses: 2
    Dernier message: 30/03/2010, 04h32
  4. [XL-2000] TCD à partir de deux sources
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/12/2009, 16h46
  5. TCD à partir de deux sources
    Par John81 dans le forum Conception
    Réponses: 0
    Dernier message: 17/12/2009, 14h36

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