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 :

[Maven][exec][cargo] goal bloquant


Sujet :

Maven Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Par défaut [Maven][exec][cargo] goal bloquant
    Bonjour à tous,

    Je suis en train de mettre en place l'intégration continue d'un projet maven 2.

    Pour ce projet j'automatise certaines actions comme le déploiement d'un ear sur JBOSS et lancement de ce dernier grâce au très sympathique plugin cargo et j'utilise également le plugin exec-maven-plugin pour exécuter un .bat qui lance un outil de cache automatiquement.

    Mon problème c'est que je n'arrive pas à lancer ces 2 actions en même temps (style: mvn exec:exec cargo:start) , ces actions étant bloquantes (soit l'une, soit l'autre) ce qui interrompt également le cycle de build du projet.

    Ma question: Serait-il donc possible de lancer ces actions dans un mode non bloquant ?

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Par défaut une idée
    Une solution trouvée serait de lancer le .bat en background en faisant:
    start /b fichier.bat

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Par défaut
    Bonjour tout le monde,

    J'ai le même problème je voudrais pouvoir continuer mon processus Maven apres un cargo:start. N'existe il pas quelque chose qui me permette d'avoir un cycle qui puisse fonctionner en tâche de fond ???

    Par exemple,

    Je voudrais pouvoir binder le demarrage de mon serveur sur la phase compile d'un EAR et ainsi pouvoir le déployer sur la phase install sans que le goal start ne me bloque directement.

    Est ce que vous avez une idée ?

    Merci d'avance

  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 vain_mich
    Bonjour tout le monde,

    J'ai le même problème je voudrais pouvoir continuer mon processus Maven apres un cargo:start. N'existe il pas quelque chose qui me permette d'avoir un cycle qui puisse fonctionner en tâche de fond ???

    Par exemple,

    Je voudrais pouvoir binder le demarrage de mon serveur sur la phase compile d'un EAR et ainsi pouvoir le déployer sur la phase install sans que le goal start ne me bloque directement.

    Est ce que vous avez une idée ?

    Merci d'avance
    cargo:start interromps ton build? De quelle façon lances-tu cargo?

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Par défaut
    Je bind mon cargo:start sur la phase install :

    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
    	<plugins>
    		<plugin>
    			<groupId>org.codehaus.cargo</groupId>
    			<artifactId>cargo-maven2-plugin</artifactId>
    			<version>0.3-SNAPSHOT</version>
    			<configuration>   
    				<container>
    					<containerId>jboss4x</containerId>
    					<home>C:\jboss-4.0.4.CR2ter</home>
    				</container>
    				<configuration>
    					<type>existing</type>
    					<home>C:\jboss-4.0.4.CR2ter\server\demov5\</home>
    					<properties>
    						<cargo.servlet.port>8080</cargo.servlet.port>
    						<cargo.jboss.configuration>demov5</cargo.jboss.configuration>
    					</properties>
    				</configuration>
    				<deployer>
    					<type>installed</type>
    					<deployables>				   
    						<deployable>
    							<groupId>sr.objectif.demoEJB3</groupId>
    							<artifactId>DemoEAR</artifactId>
    							<type>ear</type>
    							<pingURL>http://localhost:8080/ejb3Demo</pingURL>
    						</deployable>
    					</deployables>
    				</deployer>
    			</configuration>
    			<executions>
    				<execution>
    					<id>start-deploy</id>
    					<phase>install</phase>
    					<goals>
    						<goal>start</goal>
    					</goals>
    				</execution>
    			</executions>
    		</plugin>
    	</plugins>
    Je fais ../projet>mvn install

    il execute bien la commande install puis démarre bien le serveur Jboss puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [INFO] [talledLocalContainer]
    [INFO] [talledLocalContainer] 15:44:42,542 INFO  [Http11BaseProtocol] Starting C
    oyote HTTP/1.1 on http-0.0.0.0-8080
    [INFO] [talledLocalContainer] 15:44:42,636 INFO  [ChannelSocket] JK: ajp13 liste
    ning on /0.0.0.0:8009
    [INFO] [talledLocalContainer] 15:44:42,636 INFO  [JkMain] Jk running ID=0 time=0
    /32  config=null
    [INFO] [talledLocalContainer] 15:44:42,667 INFO  [Server] JBoss (MX MicroKernel)
     [4.0.4.CR2 (build: CVSTag=JBoss_4_0_4_CR2 date=200603311500)] Started in 16s:36
    0ms
    [INFO] [talledLocalContainer] JBoss 4.0.4 started on port [8080]
    [INFO] Press Ctrl-C to stop the container...
    une fois qu'il est démarré plus rien ne se passe à part ctrl+c pour arrêter le processus.

    JE voulais savoir si il était possible de récupérer la main, si par exemple je veux éxécuter d'autre tâches ???

    Merci d'avance,

    @+

  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 vain_mich
    JE voulais savoir si il était possible de récupérer la main, si par exemple je veux éxécuter d'autre tâches ???
    Il y a un paramètre wait qui a l'air tout indiqué dans ton cas :
    http://cargo.codehaus.org/Maven2+Plugin+Reference+Guide

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Par défaut
    J'avais déjà essayer d'utilisé ce paramètre. Mais une fois le process maven arrêté il coupe aussi le process du serveur Jboss. Alors que je voudrais qu'il le lance et qu'il reste lancé jusqu"a ce que je le stop manuellement.

    Je ne sais pas si c'est possible, même dans la bible better build with maven il n'en parle pas spécifiquement.

    @+

  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 vain_mich
    Je ne sais pas si c'est possible, même dans la bible better build with maven il n'en parle pas spécifiquement.
    Ca me parait assez difficile. Le process (système) est créé par Maven, il est donc normal (et heureux) qu'il soit détruit en même temps que son parent.

    Je pense que tu cas devoir passer par un petit script ant. Ou peut être simplement mettre ton JBoss en tant que service windows (ou démon unix) et l'arreter / le relancer à l'aide de maven.

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Par défaut
    Je te rejoins sur le fait que le process est coupé. Donc je ne sais pas encore comment je vais m'y prendre mais je pense que le script ant sera la solution.

    En tout cas merci pour ton aide,

    @+

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Par défaut
    La solution que j'envisage est la suivante :

    pour le plugin voici la config :

    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
    <plugin>
    			<groupId>org.codehaus.cargo</groupId>
    			<artifactId>cargo-maven2-plugin</artifactId>
    			<version>0.3-SNAPSHOT</version>
    			<configuration>
    				<wait>${cargo.wait}</wait>
    				<container>
    					<containerId>jboss4x</containerId>
    					<home>C:\jboss-4.0.4.CR2ter</home>
    				</container>
    				<configuration>
    					<type>existing</type>
    					<home>C:\jboss-4.0.4.CR2ter\server\DemoEJB3\</home>
    					<properties>
    						<cargo.servlet.port>8080</cargo.servlet.port>
    						<cargo.rmi.port>1099</cargo.rmi.port>
    						<cargo.jboss.configuration>DemoEJB3</cargo.jboss.configuration>
    					</properties>
    				</configuration>
    				<deployer>
    					<type>installed</type>
    					<deployables>				   
    						<deployable>
    							<groupId>sr.objectif.demoEJB3</groupId>
    							<artifactId>DemoEAR</artifactId>
    							<type>ear</type>
    							<pingURL>http://localhost:8080/ejb3Demo</pingURL>
    						</deployable>
    					</deployables>
    				</deployer>
    			</configuration>
    			<executions>
    				<execution>
    					<id>start-deploy-container-test</id>
    					<phase>pre-integration-test</phase>
    					<goals>
    						<goal>start</goal>
    						<goal>deploy</goal>
    					</goals>
    				</execution>
    				<execution>
    					<id>stop-container-test</id>
    					<phase>post-integration-test</phase>
    					<goals>
    						<goal>stop</goal>
    					</goals>
    				</execution> 
    			</executions>
    		</plugin>

    J'utilise avec deux profils qui vont venir changer la valeur de la variable cargo.wait :

    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
    <profiles>
        <profile>
          <id>env-test</id>
    	  <activation> 
            <activeByDefault>true</activeByDefault> 
          </activation> 
          <properties>
            <cargo.wait>false</cargo.wait>
          </properties>
        </profile>
     
        <profile>
          <id>env-prod</id>
    	  <activation>
          <property>
            <name>prod</name>
          </property>
    	  </activation>
          <properties>
            <cargo.wait>true</cargo.wait>
          </properties>
        </profile>
      </profiles>
    Ce que je voulais c'est que les profils s'activent automatiquement suivant la phase ou se trouve le process mais cette technique d'activation n'existe pas (il faut que je fasse un jira la dessus). Il faut donc passer par des target ant :

    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
    <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
    		  <execution>
                <id>test</id>
                <phase>integration-test</phase>
                <configuration>
                  <tasks>
                  <ant antfile="${basedir}/build.xml">
                  	<target name="test-ear"/>
                  </ant>
                  </tasks>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
    		  <execution>
                <id>start-site</id>
                <phase>install</phase>
                <configuration>
                  <tasks>
    	              <ant antfile="${basedir}/build.xml">
    	              	<target name="site_deploy"/>
    			<target name="start_container"/>
    	              </ant>
                  </tasks>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
         </plugin>
    Ce qui nous interesse ici, c'est la target start_container :

    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
    <project name="DemoRoot" basedir=".">
     
      <description>
      	Fichier de build.xml pour lancer des commande Maven 2.0.7
      </description>
     
      <property name="DirRoot" value="./DemoEJB3/DemoROOT" />
     
    	<condition property="isWindows">
    	  <os family="Windows" />
    	</condition>
     
    	<target name="start_container" if="isWindows">
    		<echo message="Demarrage du container en mode production ..."/>
    		<exec executable="cmd">
    		  	<arg value="/c"/>
    		  	<arg value="mvn"/>
    		    <arg value="cargo:start"/>
    			<arg value="-Dprod"/>
    		</exec>
    	</target>
     
    	<target name="site_deploy" if="isWindows">
    		<echo message="Processus de creation et de deploiement du site Maven 2.0.7..."/>
    		<exec dir="${DirRoot}" executable="cmd">
    			<arg value="/c"/>
    			<arg value="mvn"/>
    			<arg value="site-deploy"/>
    		</exec>
    	</target>
     
    	<target name="test-ear">
    		<echo message="Processus de test..."/>
    	</target>
     
    </project>
    Voila la seule solution viable que j'ai trouvé. Dîte moi ce que vous en pensez ??

    Encore merci DenisC pour ton aide.

    @+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2012, 14h13
  2. maven-resources-plugin : goal resources-copy
    Par decode dans le forum Maven
    Réponses: 8
    Dernier message: 16/11/2010, 10h31
  3. maven-eclipse-plugin : goal eclipse
    Par zomurn dans le forum Maven
    Réponses: 1
    Dernier message: 22/07/2010, 17h05
  4. [Maven 2][Cargo 1.0] déployer un répertoire
    Par nannous dans le forum Maven
    Réponses: 2
    Dernier message: 02/06/2010, 10h02
  5. Réponses: 5
    Dernier message: 16/10/2006, 12h10

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