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 :

[antrun] tache exécutée trop souvent


Sujet :

Maven Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut [antrun] tache exécutée trop souvent
    Bonjour,

    Je lance maven depuis continuum : "test" puis "site".
    Pour récupérer les sources depuis PVCS, je lance le get grace à une tache ant avec antrun.

    Mon problème, c'est que la tache ant se lance à chaque génération de rapport, et je n'ai pas bseoin d'importer 6 fois mes sources...

    Dans la balise <phase> du plugin antrun dans mon pom, j'ai essayé validate, test et initialize. Dans les trois cas, j'ai le même comportement.

    J'ai mis le log en pièce jointe et un extrait de mon pom.xml en dessous.
    Mon but est de pouvoir exécuter ma tache une fois (et une seule) au début, avant les tests de maven.
    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
     
    <build>
       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.1</version>
          <executions>
             <execution>
                <phase>initialize</phase>
                <configuration>
                   <tasks>
                      <exec executable="/produits/maven/ksh_projets/rexsig_ma_ant.ksh">
                         <arg value="-pr/PVCS/rexsig/pvcs/admin"/>
                         <arg value="-a$MAVEN_HOME/copy_src/rexsig_ma"/>
                         <arg value="/rg_sv_batch_ja"/>
                      </exec>
                   </tasks>
                </configuration>
                <goals>
                   <goal>run</goal>
                </goals>
             </execution>
          </executions>
       </plugin>
    ...
    </build>
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Salut,

    Je te propose le principe de Profil qui te permet de modeler ton pom sur l'activation de celui-ci :

    Regarde cette page et tu devrais mieux comprendre :

    http://maven.apache.org/guides/intro...-profiles.html

    et une discution qui a deja tourné autour d'un sujet analogue :

    http://www.developpez.net/forums/sho...ghlight=profil


    si tu as un problème n'hesite pas à nous recontacter.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    C'est une solution qui peut fonctionner mais j'ai l'impression que c'est du "bidouillage"...
    Je m'explique : la récupération des sources (=lancer la tache ant), je veux la faire à chaque fois que je lance le projet. Ce que je ne veux pas faire c'est la lancer à la génération de chaque rapport.

    Ce n'est pas moi qui vais maintenir maven et continuum ensuite et ce sera les développeurs et chefs de projets qui s'occuperont de continuum (et des phases qu'ils veulent lancer) donc j'aimerai leur simplifier la vie au maximum en enlevant toute option de la ligne de commande et en mettant tout dans le pom.

    Je note tout de même ta solution dans un coin de ma tête, si j'ai pas d'autres propositions, je la mettrai en oeuvre.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Des personnes ont deja proposé l'activation de profils sur des phases, ce qui eviterait de les activer en ligne de commande.

    Par contre je ne sais pas si c'est pour bientôt ,

    A+

  5. #5
    Membre confirmé

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    Citation Envoyé par vain_mich Voir le message
    Des personnes ont deja proposé l'activation de profils sur des phases, ce qui eviterait de les activer en ligne de commande.

    Par contre je ne sais pas si c'est pour bientôt ,
    En effet, j'avais une proposition dans ce sens il y a un moment déjà (Feb 16, 2007) : cf. [Proposal] New profile activation.
    Mais il semble que cette fonctionnalité ne sera pas rajouté à maven 2.

    Rémy

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    dommage car ca aurait été bien pratique !!!

  7. #7
    Membre confirmé

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Points : 515
    Points
    515
    Par défaut
    C'est ce que je pensais aussi...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Je me suis lancé dans les profiles : J'ai enlevé le plugin antrun de la partie build de mon pom et j'ai rajouté une partie profiles comme cela :

    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
     
    <profiles>
        <profile>
            <id>avecPVCS</id>
            <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                <version>1.1</version>
                <executions>
                <execution>
                    <phase>test</phase>
                    <configuration>
                    <tasks>
                        <exec executable="/produits/maven/ksh_projets/projet_maven.ksh">        
                            <arg value="/PVCS/rexsig/pvcs/admin"/>
                            <arg value="$MAVEN_HOME/copy_src/rexsig_ma"/>
                            <arg value="/rg_sv_batch_ja"/>
                            <arg value="/rexsig_ma/rg_sv_batch_ja/site"/>
                        </exec>
                    </tasks>
                    </configuration>
                    <goals>
                    <goal>run</goal>
                    </goals>
                </execution>
                </executions>
            </plugin>
            </plugins>
        </build>
        </profile>
        <profile>
            <id>sansPVCS</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        </profile>
    </profiles>
    Dans continuum, j'ai mis test -PavecPVCS site


    Malgré ça, je vois dans mes logs que mon script ant se lance encore une petite dizaine de fois à chaque fois.
    J'ai lu et relu tes deux liens mais je ne vois pas ce que j'ai mal fait.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Je viens d'essayer chez moi et tu as raison, le profil s'active une fois et on ne peut pas le desactiver.

    Par contre si tu fais :

    mvn test -PavecPVCS
    et ensuite :
    mvn site

    C'est à dire, le faire en deux passes et donc en deux commandes. Cette technique fonctionne. C'est pourquoi j'etais interessé par l'activation de profil sur des phases.

    Cependant, j'ai eu à peu près le même besoin, et pour remédier à clui-ci, je suis passé par une tâche ant. Cette nouvelle tache ant me lancait mvn site. Ainsi ton premier processus (mvn test -PavecPVCS) lance sur une de ses phases un autre processus maven (mvn site).

    C'est comme si tu faisais deux passes maven en une ligne de commande. A la fin tu n'as plus qu'à faire mvn test -PavecPVCS dans ce processus tu as la génération du site qui se fait.

    Je ne sais pas si j'ai été assez clair et je n'ai pas le code sous la main, mais je peux te le passer si ca t'interesse.

    Tiens moi au courant.

    A+

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    J'ai viré tout profil de ma configuration et j'ai remis antrun dans le build en lui demandant gentiment de me lancer un mvn site.

    Donc là je lance mvn test depuis continuum, et antrun se charge de lancer mon script puis de générer le site.

    Mais ....
    J'ai mis le bout de code qui suit 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.1</version>
        <executions>
    	<execution>
    	    <phase>test</phase>
    	    <configuration>
    		<tasks>
    		    <exec executable="/produits/maven/ksh_projets/projet_maven.ksh">
    			<arg value="/PVCS/rexsig/pvcs/admin"/>
    			<arg value="$MAVEN_HOME/copy_src/rexsig_ma"/>
    			<arg value="/rg_sv_batch_ja"/>
    			<arg value="/rexsig_ma/rg_sv_batch_ja/site"/>
    		    </exec>
    		    <exec executable="/produits/maven/bin/mvn">
    			<arg value="site"/>
    		    </exec>
    		</tasks>
    	    </configuration>
    	    <goals>
    		<goal>run</goal>
    	    </goals>
    	</execution>
        </executions>
    </plugin>
    Est-ce que antrun attend d'avoir finit le premier script avant de lancer mvn site ?

    Comment je peux faire pour être certain que mon mvn site se lance bien après les tests? (pcq si j'ai bien compris, antrun lance sa tache avant la phase indiquée)

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Normalement, mvn site sera lancé apres le premier script ant. Verifie le dans tes logs.

    Sinon pour les tests ils seront executés apres tes tâches ant (et donc mvn site). Puisque lorsque tu map des plugin (tache ...) sur des phases, les actions maven sont faites apres. Je te conseille donc de mapper ta tâche ant (mvn site) sur une phase post test.

    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
     
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.1</version>
        <executions>
    	<execution>
    	    <phase>test</phase>
    	    <configuration>
    		<tasks>
    		    <exec executable="/produits/maven/ksh_projets/projet_maven.ksh">
    			<arg value="/PVCS/rexsig/pvcs/admin"/>
    			<arg value="$MAVEN_HOME/copy_src/rexsig_ma"/>
    			<arg value="/rg_sv_batch_ja"/>
    			<arg value="/rexsig_ma/rg_sv_batch_ja/site"/>
    		    </exec>
    		</tasks>
    	    </configuration>
    	    <goals>
    		<goal>run</goal>
    	    </goals>
    	</execution>
            <execution>
    	    <phase>sur une phase post test</phase>
    	    <configuration>
    		<tasks>
    		    <exec executable="/produits/maven/bin/mvn">
    			<arg value="site"/>
    		    </exec>
    		</tasks>
    	    </configuration>
    	    <goals>
    		<goal>run</goal>
    	    </goals>
    	</execution>
        </executions>
    </plugin>
    Ce qui te donne :

    1 - Tache ant executable="/produits/maven/ksh_projets/projet_maven.ksh"

    2 - Test maven

    3 - tache ant mvn site (si tu map cette tache ant sur une phase post test)

    bon courage,

    a++

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Merci de tes conseils.

    D'après la page que j'ai lu, la phase suivante est package. Qu'est-ce que je peux mettre, sachant que je ne veux pas générer de package?


    J'ai relancé le build et là, catastrophe : il boucle à l'infini !
    D'après les log, la première tache ant s'exécute, il lance ensuite la deuxième tache (mvn site) qui doit, de ce que je devine (suppositions, suppositions), englober la phase test donc ça relance antrun, qui relance mvn site, qui relance antrun, qui relance mvn site, etc. jusqu'à ce que je l'arrête de force.

    En tout cas, antrun attend bien la fin de la première tache pour lancer la suivante.

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    En tout cas, antrun attend bien la fin de la première tache pour lancer la suivante.
    C'est deja pas mal !!!

    Sinon je suis en train de me poser une question. Tu veux passer les tests et créer le site ?

    Sachant que lorsque tu fais mvn site, obligatoirement il passe les tests. Je ne vois pas pourquoi tu veux d'abord passer les tests puis faire le site qui refera une deuxieme fois les tests. Si on suit cette nouvelle logique, je te propose ceci :

    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
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.1</version>
        <executions>
    	<execution>
    	    <phase>pre-site</phase>
    	    <configuration>
    		<tasks>
    		    <exec executable="/produits/maven/ksh_projets/projet_maven.ksh">
    			<arg value="/PVCS/rexsig/pvcs/admin"/>
    			<arg value="$MAVEN_HOME/copy_src/rexsig_ma"/>
    			<arg value="/rg_sv_batch_ja"/>
    			<arg value="/rexsig_ma/rg_sv_batch_ja/site"/>
    		    </exec>
    		</tasks>
    	    </configuration>
    	    <goals>
    		<goal>run</goal>
    	    </goals>
    	</execution>
        </executions>
    </plugin>
    Le fait de faire simplement mvn site te suffira, tu pourras alors tres bien mapper ta tâche ant sur la phase pre-site (il existe des phase intermediaire à celle que tu as pu voir dans le lien que tu m'as montré, pour ca je te propose le livre "better build with maven" qui est la bibile pour maven). Donc dans l'ordre :

    1- tache ant
    2 - tests
    3 - site

    Est ce que ca pourrait te convenir ?

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Sachant que lorsque tu fais mvn site, obligatoirement il passe les tests. Je ne vois pas pourquoi tu veux d'abord passer les tests puis faire le site qui refera une deuxieme fois les tests.
    Parce que j'ai découvert l'existance de Maven il y a deux mois au début de mon stage et que, du coup, je galère encore un peu

    J'ai découvert cette page qui détaille aussi le cycle de vie.

    Ca semble bien me convenir et après avoir testé, ça marche plutot bien !
    Du coup, je ne lance plus qu'une commande dans continuum, sans argument derrière et maven va rechercher tout seul mes sources.


    Parfait! Merci vain_mich!

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Un ptit resolu et le tour est joué

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

Discussions similaires

  1. Exécution trop lente du code
    Par DOM DOM dans le forum VBA Access
    Réponses: 0
    Dernier message: 20/08/2007, 11h15
  2. Fenêtre d'exécution trop grande
    Par larimoise dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 28/12/2006, 17h55
  3. Exécution trop longue d'une requête
    Par lodan dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/10/2006, 15h34
  4. CGI exécution trop longue
    Par crochepatte dans le forum Web
    Réponses: 6
    Dernier message: 23/08/2006, 15h11
  5. CGI exécution trop longue
    Par crochepatte dans le forum Apache
    Réponses: 3
    Dernier message: 18/08/2006, 15h02

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