java - deploy - tomcat7-maven-plugin maven
maven-tomcat7-plugin produce JAR ejecutable corrupto (2)
Tengo un problema al usar el complemento Maven Tomcat7 para producir archivos JAR con una instancia incorporada de Tomcat7. Aquí está mi fragmento de pom.xml
:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/${project.artifactId}</path>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>exec-war</goal>
</goals>
</execution>
</executions>
</plugin>
Mi proyecto usa embalaje de war
. Se produce el archivo JAR que contiene Tomcat con el archivo WAR del proyecto; sin embargo, cuando intento ejecutarlo obtengo un error:
java.io.FileNotFoundException: /home/rafal.wrzeszcz/workspace/Mailer/.extract/webapps/mailer.war
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:214)
at java.util.zip.ZipFile.<init>(ZipFile.java:144)
at java.util.jar.JarFile.<init>(JarFile.java:153)
at java.util.jar.JarFile.<init>(JarFile.java:90)
at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:88)
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89)
at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:113)
at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:722)
at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:843)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:387)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Intenté la versión de plugin 2.1
- el mismo resultado.
Este es el árbol de directorios que se extrae ejecutando el JAR:
$ ls -AR .extract
.extract:
conf logs temp webapps work
.extract/conf:
.extract/logs:
access_log.2014-03-07
.extract/temp:
.extract/webapps:
.extract/work:
Tomcat
.extract/work/Tomcat:
localhost
.extract/work/Tomcat/localhost:
mailer
.extract/work/Tomcat/localhost/mailer:
(Como puede ver, no se copiaron archivos)
Esto es de hecho un error en el plugin de tomcat7 maven versión 2.2 : https://issues.apache.org/jira/browse/MTOMCAT-263
Use la versión 2.1 o espere que se libere 2.3.
Elimina la ruta de la configuración. Y usa la versión 2.1 del plugin tomcat. Hacer esos dos cambios en mi archivo pom solucionó un problema similar para mí. También había limpiado la $M2_REPO/org/apache
antes de volver a ejecutar.