2009-08-18 25 views
3

Lorsque j'utilise Maven avec le plug-in cargo pour gérer des déploiements à chaud vers tomcat, maven échoue sur la tâche clean si l'artefact .war n'existe pas actuellement. Donc, si je lance mvn clean, alors mvn clean package - il y a des erreurs. Que puis-je faire pour que la cargaison ignore cela?Problème lors de l'utilisation de Maven avec le plug-in Cargo

C:\work2\Fresh\fresh-ui>mvn clean 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building fresh-ui 
[INFO] task-segment: [clean] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [cargo:deployer-undeploy {execution: clean-undeploy}] 
[INFO] [mcat5xRemoteDeployer] Undeploying [C:\work2\Fresh\fresh-ui\target\fresh. 
war] 
[INFO] [clean:clean {execution: default-clean}] 
[INFO] Deleting directory C:\work2\Fresh\fresh-ui\target 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 5 seconds 
[INFO] Finished at: Tue Aug 18 09:49:16 PDT 2009 
[INFO] Final Memory: 9M/16M 
[INFO] ------------------------------------------------------------------------ 
C:\work2\Fresh\fresh-ui>mvn clean 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building fresh-ui 
[INFO] task-segment: [clean] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [cargo:deployer-undeploy {execution: clean-undeploy}] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] FATAL ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Failed to create deployable for the parameters (container [id = [tomcat5x 
]], deployable type [war]). 
C:\work2\Fresh\fresh-ui\target\fresh.war (The system cannot find the path specif 
ied) 
[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
org.codehaus.cargo.container.ContainerException: Failed to create deployable for 
the parameters (container [id = [tomcat5x]], deployable type [war]). 
     at org.codehaus.cargo.generic.spi.AbstractGenericHintFactory.createImple 
mentation(AbstractGenericHintFactory.java:157) 
     at org.codehaus.cargo.generic.spi.AbstractIntrospectionGenericHintFactor 
y.createImplementation(AbstractIntrospectionGenericHintFactory.java:86) 
     at org.codehaus.cargo.generic.deployable.DefaultDeployableFactory.create 
Deployable(DefaultDeployableFactory.java:163) 
     at org.codehaus.cargo.maven2.configuration.Deployable.createDeployable(D 
eployable.java:136) 
     at org.codehaus.cargo.maven2.AbstractDeployerMojo.performDeployerActionO 
nAllDeployables(AbstractDeployerMojo.java:99) 
     at org.codehaus.cargo.maven2.AbstractDeployerMojo.doExecute(AbstractDepl 
oyerMojo.java:47) 
     at org.codehaus.cargo.maven2.AbstractCargoMojo.execute(AbstractCargoMojo 
.java:255) 
     at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi 
nManager.java:483) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa 
ultLifecycleExecutor.java:678) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi 
fecycle(DefaultLifecycleExecutor.java:540) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau 
ltLifecycleExecutor.java:519) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan 
dleFailures(DefaultLifecycleExecutor.java:371) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen 
ts(DefaultLifecycleExecutor.java:332) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi 
fecycleExecutor.java:181) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
     at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:4 
1) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
     at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
     at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 

     at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
Caused by: java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 

     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct 
orAccessorImpl.java:39) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC 
onstructorAccessorImpl.java:27) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at org.codehaus.cargo.generic.deployable.DefaultDeployableFactory.create 
Instance(DefaultDeployableFactory.java:196) 
     at org.codehaus.cargo.generic.spi.AbstractGenericHintFactory.createImple 
mentation(AbstractGenericHintFactory.java:153) 
     ... 25 more 
Caused by: org.codehaus.cargo.container.ContainerException: Failed to parse Tomc 
at WAR file in [C:\work2\Fresh\fresh-ui\target\fresh.war] 
     at org.codehaus.cargo.container.tomcat.TomcatWAR.<init>(TomcatWAR.java:5 
5) 
     ... 31 more 
Caused by: org.codehaus.cargo.util.CargoException: Failed to find file [C:\work2 
\Fresh\fresh-ui\target\fresh.war] 
     at org.codehaus.cargo.util.DefaultFileHandler.getInputStream(DefaultFile 
Handler.java:351) 
     at org.codehaus.cargo.module.DefaultJarArchive.getContentAsStream(Defaul 
tJarArchive.java:231) 
     at org.codehaus.cargo.module.DefaultJarArchive.getResource(DefaultJarArc 
hive.java:154) 
     at org.codehaus.cargo.module.webapp.tomcat.TomcatWarArchive.parseTomcatC 
ontextXml(TomcatWarArchive.java:92) 
     at org.codehaus.cargo.module.webapp.tomcat.TomcatWarArchive.<init>(Tomca 
tWarArchive.java:61) 
     at org.codehaus.cargo.container.tomcat.TomcatWAR.<init>(TomcatWAR.java:5 
1) 
     ... 31 more 
Caused by: java.io.FileNotFoundException: C:\work2\Fresh\fresh-ui\target\fresh.w 
ar (The system cannot find the path specified) 
     at java.io.FileInputStream.open(Native Method) 
     at java.io.FileInputStream.<init>(FileInputStream.java:106) 
     at org.codehaus.cargo.util.DefaultFileHandler.getInputStream(DefaultFile 
Handler.java:347) 
     ... 36 more 
java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 

     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct 
orAccessorImpl.java:39) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC 
onstructorAccessorImpl.java:27) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
     at org.codehaus.cargo.generic.deployable.DefaultDeployableFactory.create 
Instance(DefaultDeployableFactory.java:196) 
     at org.codehaus.cargo.generic.spi.AbstractGenericHintFactory.createImple 
mentation(AbstractGenericHintFactory.java:153) 
     at org.codehaus.cargo.generic.spi.AbstractIntrospectionGenericHintFactor 
y.createImplementation(AbstractIntrospectionGenericHintFactory.java:86) 
     at org.codehaus.cargo.generic.deployable.DefaultDeployableFactory.create 
Deployable(DefaultDeployableFactory.java:163) 
     at org.codehaus.cargo.maven2.configuration.Deployable.createDeployable(D 
eployable.java:136) 
     at org.codehaus.cargo.maven2.AbstractDeployerMojo.performDeployerActionO 
nAllDeployables(AbstractDeployerMojo.java:99) 
     at org.codehaus.cargo.maven2.AbstractDeployerMojo.doExecute(AbstractDepl 
oyerMojo.java:47) 
     at org.codehaus.cargo.maven2.AbstractCargoMojo.execute(AbstractCargoMojo 
.java:255) 
     at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi 
nManager.java:483) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa 
ultLifecycleExecutor.java:678) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi 
fecycle(DefaultLifecycleExecutor.java:540) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau 
ltLifecycleExecutor.java:519) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan 
dleFailures(DefaultLifecycleExecutor.java:371) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen 
ts(DefaultLifecycleExecutor.java:332) 
     at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi 
fecycleExecutor.java:181) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
     at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:4 
1) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
     at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
     at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 

     at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
Caused by: org.codehaus.cargo.container.ContainerException: Failed to parse Tomc 
at WAR file in [C:\work2\Fresh\fresh-ui\target\fresh.war] 
     at org.codehaus.cargo.container.tomcat.TomcatWAR.<init>(TomcatWAR.java:5 
5) 
     ... 31 more 
Caused by: org.codehaus.cargo.util.CargoException: Failed to find file [C:\work2 
\Fresh\fresh-ui\target\fresh.war] 
     at org.codehaus.cargo.util.DefaultFileHandler.getInputStream(DefaultFile 
Handler.java:351) 
     at org.codehaus.cargo.module.DefaultJarArchive.getContentAsStream(Defaul 
tJarArchive.java:231) 
     at org.codehaus.cargo.module.DefaultJarArchive.getResource(DefaultJarArc 
hive.java:154) 
     at org.codehaus.cargo.module.webapp.tomcat.TomcatWarArchive.parseTomcatC 
ontextXml(TomcatWarArchive.java:92) 
     at org.codehaus.cargo.module.webapp.tomcat.TomcatWarArchive.<init>(Tomca 
tWarArchive.java:61) 
     at org.codehaus.cargo.container.tomcat.TomcatWAR.<init>(TomcatWAR.java:5 
1) 
     ... 31 more 
Caused by: java.io.FileNotFoundException: C:\work2\Fresh\fresh-ui\target\fresh.w 
ar (The system cannot find the path specified) 
     at java.io.FileInputStream.open(Native Method) 
     at java.io.FileInputStream.<init>(FileInputStream.java:106) 
     at org.codehaus.cargo.util.DefaultFileHandler.getInputStream(DefaultFile 
Handler.java:347) 
     ... 36 more 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3 seconds 
[INFO] Finished at: Tue Aug 18 09:49:22 PDT 2009 
[INFO] Final Memory: 8M/16M 
[INFO] ------------------------------------------------------------------------ 
C:\work2\Fresh\fresh-ui> 
+1

Cela semble être un problème commun, la réponse la plus simple: seulement fonctionner une fois propre. Je vais regarder de plus près et voir s'il y a une configuration qui peut être paramétrée pour éviter l'échec de la cargaison au second appel. –

+0

Il y a quelques infos sur ce blog: http://betterlogic.com/roger/?p=1714, mais ne semble pas être une réponse complète –

Répondre

2

D'après ce que je peux voir, vous avez lié deployer-undeploy à la phase pre-clean du cycle de vie propre. Ainsi, lors de l'exécution de la première clean, la guerre est en toute sécurité non déployée et target est ensuite supprimée. Lors de l'exécution du deuxième nettoyage, cargo:deployer-undeploy ne peut pas trouver la guerre dans target et échoue.

Pour moi, Cargo ne devrait pas échouer et c'est probablement un bug dans le plugin maven 2 de Cargo ou dans l'API principale qui devrait gérer ce cas gracieusement. J'ouvrirais un numéro dans le issue tracker de Cargo.

Comme mentionné par Rich dans un commentaire, la solution de contournement en cours est de ne nettoyer qu'une seule fois.