当前位置: 代码迷 >> Web前端 >> maven 项目 上关于 tomcat的热部署【转载】
  详细解决方案

maven 项目 上关于 tomcat的热部署【转载】

热度:610   发布时间:2012-10-28 09:54:44.0
maven 项目 下关于 tomcat的热部署【转载】
以很方便的调试tomcat项目,具体配置就不多说了,看一下插件的使用说明就知道了

当用过maven管理项目后,虽然也有 maven tomcat 插件,但用做修改频繁的项目时很不方便。由于maven项目结构和eclipse 默认生成的项目结构不同,webapp下没有class和jar,直接用tomcat eclipse调试肯定不行了。不过还是有曲线救国的办法的

以下部分摘自网络

1.修改tomcat的server.xml配置文件,在host结点下添加如下代码


<Context docBase="F:\webapp" path="/demo" reloadable="true"></Context>

这样tomcat便可以即时感知到F:\webapp目录下文件的变化并自动重新部署了。但是,我们的class文件和配置文件是编译在target/classes下呀。别急,继续。



2.回到eclipse中,右击demo项目,选java build path ,点击source选项卡,修改最下面的Default output folder为demo/src/main/webapp/WEB-INF/classes。再选择上面的demo/src/main/java及demo/src/main/resources下的Output folder选项,点击edit按钮,选择第一项Project's default output folder,点击OK。

这样java会被编译到WEB-INF下的classes目录,为tomcat所感知了。可是,还有项目的maven依赖包呢。




3.一般情况下,一个项目的依赖包一旦稳定下来,不会有太多的变动。因此,直接把maven依赖包拷到WEB-INF/lib下即可。具体做法如下:
进入命令行,切换当前目录到项目根目录下。运行命令
引用mvn  dependency:copy-dependencies

这时候demo项目的依赖包会被导到target/dependency下,将它们拷到WEB-INF/lib下即可。如果依赖包有变动,再导一次就好了。




注意:
  如果最后要用maven将项目打包成war,还需要将java类的编译路径改回来,并且删除掉WEB-INF下的classes目录和lib目录,否则会报错

华丽的分割线-----------------------转载结束---------------------

总结一下,上面的方法虽然解决了tomcat热部署和调试的问题,但毕竟的稍微动了maven的结构,其实用jetty做服务器调试可以完美的配合eclipse和maven 运行,不存在tomcat的那些问题,只需要安装 run jetty插件就可以了。实际项目中,我们可以用jetty做开发的服务,利用maven打war包部署的tomcat上

  相关解决方案