2009-08-18 6 views
3

Когда я использую Maven с подключением груза для обработки горячего развертывания в tomcat, maven не выполняет чистую задачу, если артефакт .war в настоящее время не существует. Так что если я запустил mvn clean, то mvn clean package - он ошибается. Что я могу сделать, чтобы груз проигнорировал это?Проблема с использованием подключаемого модуля Maven с 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

Это, по-видимому, обычная проблема, простейший ответ: только запустить очистить один раз. У меня будет более глубокий взгляд и посмотреть, есть ли какая-либо конфигурация, которая может быть настроена так, чтобы избежать сбоя во время второго вызова. –

+0

В этом блоге есть информация: http://betterlogic.com/roger/?p=1714, но это похоже, не полный ответ –

ответ

2

Из того, что я могу видеть, как вы связаны deployer-undeploy к pre-clean фазе чистого жизненного цикла. Таким образом, при выполнении первого clean война безопасно развёрнута, а затем удаляется target. При выполнении второй очистки cargo:deployer-undeploy не может найти войну в target и не удается.

Для меня Cargo не должен терпеть неудачу, и это, скорее всего, ошибка в плагине Cargo maven 2 или в базовом API, который должен обработать этот случай изящно. Я бы открыл вопрос в Cargo's issue tracker.

Как указано Rich в комментарии, текущее обходное решение состоит в том, чтобы запустить очистить только один раз.