2012-04-19 92 views
2

如果我手动将我的web应用程序部署到tomcat 6,一切正常。但是当我试图用maven6-tomcat-plugin来做同样的事情时,它不会被部署。一种宿主错误如下,不其中之一让任何意义(从catalina.out的日志文件):无法使用maven插件将战争部署到tomcat

  1. INFO:validateJarFile(在/ var/lib中/ tomcat6中/ web应用/ spring_sec/WEB-INF/LIB/servlet的-api-2.5.jar) - jar没有加载。这是不正确的;我解压缩了战争文件,并且文件显然存在。

  2. 重度:命名上下文创建失败:javax.naming.NamingException中:上下文是只读的。

  3. 严重:部署Web应用程序存档时出错spring_sec.war java.lang.NoClassDefFoundError:org/springframework/beans/factory/Aware。另一个不真实的陈述;解压后,我发现包含所需类的WEB-INF/lib/spring-beans-3.1.1.RELEASE.jar文件。

将war文件手动部署到tomcat并使用maven插件是否是同样的事情?

Maven的输出命令MVN的tomcat6:部署MVN干净后:

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building SpringSec 0.1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] >>> tomcat6-maven-plugin:2.0-beta-1:deploy (default-cli) @ spring_sec >>> 
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ spring_sec --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory /media/winchester/spring_sec/src/main/resources 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ spring_sec --- 
[INFO] Compiling 1 source file to /media/winchester/spring_sec/target/classes 
[INFO] 
[INFO] --- maven-resources-plugin:2.3:testResources (default-testResources) @ spring_sec --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory /media/winchester/spring_sec/src/test/resources 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ spring_sec --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ spring_sec --- 
[INFO] No tests to run. 
[INFO] Surefire report directory: /media/winchester/spring_sec/target/surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[INFO] 
[INFO] --- maven-war-plugin:2.2:war (default-war) @ spring_sec --- 
[INFO] Packaging webapp 
[INFO] Assembling webapp [spring_sec] in [/media/winchester/spring_sec/target/spring_sec-0.1.0-SNAPSHOT] 
[INFO] Processing war project 
[INFO] Copying webapp resources [/media/winchester/spring_sec/src/main/webapp] 
[INFO] Webapp assembled in [40 msecs] 
[INFO] Building war: /media/winchester/spring_sec/target/spring_sec-0.1.0-SNAPSHOT.war 
[INFO] WEB-INF/web.xml already added, skipping 
[INFO] 
[INFO] <<< tomcat6-maven-plugin:2.0-beta-1:deploy (default-cli) @ spring_sec <<< 
[INFO] 
[INFO] --- tomcat6-maven-plugin:2.0-beta-1:deploy (default-cli) @ spring_sec --- 
[INFO] Deploying war to ***:8080/spring_sec 
Uploading: ***:8080/manager/html/deploy?path=%2Fspring_sec 
3211/3211 KB 
Uploaded: ***:8080/manager/html/deploy?path=%2Fspring_sec (3211 KB at 50171.2 KB/sec) 
[INFO] FAIL - Failed to deploy application at context path /spring_sec 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 4.280s 
[INFO] Finished at: Thu Apr 19 22:07:39 EEST 2012 
[INFO] Final Memory: 15M/144M 
[INFO] ------------------------------------------------------------------------ 

** Maven的POM:**

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.denarced</groupId> 
    <artifactId>spring_sec</artifactId> 
    <version>0.1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>SpringSec</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.2</version> 
     </plugin> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.tomcat.maven</groupId> 
     <artifactId>tomcat6-maven-plugin</artifactId> 
     <version>2.0-beta-1</version> 
     <configuration> 
      <server>lapserver</server> 
      <url>http://192.168.11.7:8080/manager/html</url> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

回答

2
  1. Tomcat将不加载的servlet-API .jar是Tomcat的核心部分(已经存在于$ TOMCAT_HOME/lib文件夹中),这个'info'语句只是告诉你Tomcat忽略了jar文件

  2. 当你说它工作正常,如果你手动部署 - 你是什么意思?您是手动将war文件放在$ TOMCAT_HOME/webapps文件夹中,还是使用管理器web应用程序在部署页面上上传战争文件?你能否确认你能够通过管理器应用程序(这是maven-tomcat6-plugin包装 - 这是什么maven-tomcat6插件打包 - PUT到经理webapp,发布你的战争文件

  3. 你可以验证解压war文件(在$ TOMCAT_HOME/webapps /目录spring_sec/WEB-INF/lib目录)包含弹簧豆-3.1.1.RELEASE.jar

+0

2.是的,我的意思是使用/ manager/html webapp上传文件。 – denarced 2012-04-20 03:08:48

+0

3.是的春豆罐是假设它在服务器端,但扭曲。我看起来手动上传和maven插件的行为方式不同。手动方法保留版本号,以便插件仅使用spring_sec,手动将-0.1.0-SNAPSHOT部分添加到文件和目录名称。而第二个也是更重要的发现是,该插件出于某种原因使用了旧组件。所有弹簧组件都是3.0.6,这绝对不是计划。 – denarced 2012-04-20 03:21:16

0

问题已解决与克里斯·怀特的帮助下,这是至关重要的。看起来,Tomcat依然保留了一些老版本的webapp,它是由老版本的Spring组件构成的。关闭Tomcat并手动删除打包和未打包的webapp文件后,我能够通过maven再次部署插入。

+3

也许你想接受克里斯怀特在这种情况下的答案,给他修复的功劳... – nwinkler 2012-04-20 06:55:44