在《Maven实战》第239页-----使用cargo实现自动化部署,其中部署至本地web容器有两种方式,分别为standalone模式和existing模式,我选择的是existing模式,下面是我的配置,在account-web的pom文件中:


<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.0</version>
    <configuration>
       <container>
           <containerId>tomcat7x</containerId>
           <home>D:\apache-tomcat-7.0.77</home>
       </container>
       <configuration>
           <type>existing</type>
           <home>D:\apache-tomcat-7.0.77</home>
       </configuration>
    </configuration>
</plugin>


     在maven的settings.xml中配置了pluginGroup后,就可以在命令行进行调用了,在执行cargo命令前,应该先在父目录执行mvn  clean  install,将所有子模块打包安装,以便为其他模块提供依赖,书上少了这一步。没有这一步会出错。打包完后,紧接着进入子模块account-web目录下,执行mvn  cargo:start   .报错了:

---------------------------------------------------------------------------------------------------------------------------------

cargo-maven2-plugin:1.0:start failed: Cannot create configuration. There'
s no registered configuration for the parameters (container [id = [tomcat7x], ty
pe = [installed]], configuration type [existing]). Actually there are no valid t
ypes registered for this configuration. Maybe you've made a mistake spelling it?

----------------------------------------------------------------------------------------------------------------------------------


     原因是cargo-maven2-plugin插件的版本与tomcat版本有兼容关系,书上插件用的是1.0版本,tomcat为6.x;而我电脑上tomcat为7.x,所以我将cargo-maven2-plugin插件的版本升级为1.4.9就成功了:

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.9</version>
    <configuration>
       <container>
           <containerId>tomcat7x</containerId>
           <home>D:\apache-tomcat-7.0.77</home>
       </container>
       <configuration>
           <type>existing</type>
           <home>D:\apache-tomcat-7.0.77</home>
       </configuration>
    </configuration>
</plugin>

    

    另外,虽然构建成功了,我指的是使用mvn  cargo:start命令后,显示构建成功,但是tomcat并没有一直维持启动状态,而是构建成功后就断开了,这时应该再执行mvn  cargo:run命令,访问路径为http://localhost:8080/account-web/signup.jsp,书上写的是http://localhost:8080/account-web-1.0.0-SNAPSHOT/signup.jsp路径不正确。其实你可以到tomcat的webapp目录下一看就知道

  

   最后一个问题是这种启动方式过程中可能会报某些类找不到的错误,例如[INFO] [talledLocalContainer] Exception in thread "pool-1-thread-1" java.lang.NoClassDefFoundError: javax/mail/URLName

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐