/ / maven-tomcat7-plugin произвежда повреден изпълним JAR - java, maven, jar, tomcat7, war

maven-tomcat7-plugin създава повредени изпълнимия JAR - java, maven, jar, tomcat7, war

Имам проблем с използването на плъгин Maven Tomcat7 за създаване на JAR архиви с вграден екземпляр Tomcat7. Ето го моя 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>

Моят проект използва war опаковки. Създава се JAR файлът, съдържащ Tomcat с WAR архив на проекта, но когато се опитам да го стартирам, получавам грешка:

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)

Опитах версия на плъгин 2.1 - същия резултат.

Това е дървото на директория, което се извлича чрез изпълнение на 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:

(както виждате, файлове не са копирани)

Отговори:

6 за отговор № 1

Премахнете пътя от конфигурацията. И използвайте версия 2.1 на плъгина tomcat. Осъществяването на тези две промени в моят pom файл отстрани подобен проблем за мен. Също така бях почистила $M2_REPO/org/apache папка преди подновяване.


7 за отговор № 2

Това наистина е грешка в плъгина tomcat7 maven версия 2.2: https://issues.apache.org/jira/browse/MTOMCAT-263

Използвайте версия 2.1 или изчакайте 2.3.