java web项目自动部署到Tomcat的原因
2016-12-03 14:27
344 查看
关于eclipse中MAVEN WEB工程中编译问题
这几天是被java的环境搞疯了,我先是搭了一个spring+springmvc+mybatis的工程,在家里跑了一下,没有问题,把工程带到公司里用,却一直不能使用。按常理来说,只要工程发生一点变化,tomcat都会自动重启,自动重新reload。但是我发现我在公司无论怎么改,tomcat没有一点变化,都是之前的工程状态。
原因是因为之前,我把Build Automaticlly给去掉了。导致了eclipse不能及时的把编译文件build到指定目录中去。
勾上了就能同步上去了。
后来,我想了一下,它是怎么样同步,根据什么来同步的呢?
选中工程右键选择properties,找到
,
Deployment Assembly(部署装配),这里是真正的部署到tomcat的工程。还有一个目录java Build Path
这里有一个output folder文件选项,这里下面的目录也是动态编译的。但是这个classes文件夹在工程中是隐藏的。
在Deployment Assembly 和build Path中的输出文件夹中classes目录是同步 ,但是tomcat实际实际装载的是Deployment Assembly 下面的文件。
打开一个文件夹就可以证明这个问题:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\datag\WEB-INF\classes\
这个目录是tomcat实际装载WEB项目的目录。正好与Deployment Assembly的目录对等。
但是后来我奇葩地发现target下面也有一个datag\WEB-INF\classes\目录,天真的我以为tomcat装载的是它,然而,当我对一个类文件作了修改之后,我发现target下面的个datag\WEB-INF\classes\下的对应的class文件的时间并没有改变,这说明虽然文件已经编译build但是并没有build到这个目录。然而我发现target\classes和\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\datag\WEB-INF\classes\下对应的class文件的修改时间改变了。
现在问题很明朗了,当勾上Build Automaticlly,当类文件发生一点变化,eclipse都会动态编译,然后build到Deployment Assembly和build Path下设置的输出目录,我这里对应的是\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\datag\WEB-INF\classes\和target\classes,而tomcat最终执行的是Deployment Assembly下的目录,紧接着,tomcat就会自动reload工程。
这里还有一个小小的问题target \datag\WEB-INF\classes的目录是哪里来的呢,而且还不会动态更新?
其实这个是maven的产物,我勒个去,你执行maven install就知道了,(我的工程的名字叫datag)
这句话是在控制台输出的。
target \datag\WEB-INF\classes是maven的产物,当然是不会动态更新了,只要当执行maven重新打包的命令的时候,里面的工程才能更新过来。
文章来源:http://www.cnblogs.com/think-in-java/p/4831701.html
相关文章推荐
- 如何在tomcat下部署多个项目
- tomcat并发用户数,以及相应时间测试
- idea启动tomcat失败,1099端口被占用
- idea启动tomcat失败,1099端口被占用
- 1web服务器 j2ee应用服务器,区别 2tomcat是servlet容器,Tomcat一直被认为是Servlet/JSP API的执行器
- tomcat的安装
- Java初转型-Tomcat安装和配置
- MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- Eclipse +Tomcat+MAVEN+SVN项目完整环境搭建
- tomcat的maxThreads、acceptCount(最大线程数、最大排队数)
- 如何在Windows Server上部署tomcat+mysql+java环境
- [tomcat7源码学习]初始化之catalina.home和catalina.base(转)
- Maven部署Web项目到Tomcat7
- redhat虚拟机安装jdk1.8和tomcat8
- 安装Tomcat指定JDK
- tomcat开发远程调试端口以及利用eclipse进行远程调试
- linux(ubuntu) 安裝solr6.3 在tomcat8上 創建core
- Tomcat解决内存溢出问题
- keepalived+nginx+tomcat高可用(主从切换)以及灾难恢复
- tomcat permgen space 内存溢出解决方法