之前出现这个问题的时候一直没有得到很好的解决方案,在网络上面找到的也是不大适用于Maven的,而且很多写的真的不够详尽,最主要是没有一个解决流程,都是几句话带过。在这里我就打算给大家详细说一下出现Deployment is out of date due to changes in the underlying project contents这个问题的时候一般需要怎样解决。
首先声明下,老猫使用Maven来管理工程的,这个方法同样适用于其他形式的工程(非Maven管理的)。
此文老猫原创,转载请加本文连接:http://blog.csdn.net/nthack5730/article/details/51166321
更多有关老猫的文章:http://blog.csdn.net/nthack5730
很多时候在Tomcat部署的时经常出现如下的蛋疼问题:
Deployment is out of date due to changes in the underlying project contents. You'll need to 'Redeploy' the project to update the deployed archive.
没错,就是蛋疼,好好地怎么就不行,我已经被这个问题折磨得很惨烈了!!这个问题是有时候出现,有时候自己又正常了,特别是在换了一个工作空间并且导入项目之后!但是我们不可能每次都去换工作空间再导入项目,这是一个很傻逼的做法。
因此我对其进行了一番蛋疼的研究:将原本修复好的项目再弄出这个问题。终于找到了原因。
首要原因:因为依赖的JAR文件没有加载进来!
多数是因为没有在打包编译的设置里面加入Maven的JAR包的依赖打包,要确保Maven在编译的时候能够正确打包每个资源的对应地址!
有人说在【Java Build Path】里面去检查是否少了Jar包,可是这个是一个Maven管理的工程,基本上自己加进来的JAR包是少之又少的!所以基本上这个问题和我写的Maven的依赖是有很大的关系的。
经过一番检查,发现就没有加入Maven Dependencies这个。
非Maven工程就检查自己少了哪个JAR包没有引入或者是没有正确指定打包路径。
在【项目】右键--->【属性】--->【Myeclipse】--->【Deployment Assembl....】这个选项卡查看
如何添加:
在刚刚的页面中点击【添加】,然后选择【Java Build Path Entries】
再选择【Maven Dependencies】,然后点击【完成】
此文老猫原创,转载请加本文连接:http://blog.csdn.net/nthack5730/article/details/51166321
更多有关老猫的文章:http://blog.csdn.net/nthack5730
如果按照上面的方法操作还是提示出错的话,记得去检查你们的Maven的各个级别的依赖关系,看清楚是不是在调用的时候有import进来但是在<dependencies>里面没有依赖,这也是造成文件锁定访问出错的原因之一。
每次修改和【clean deploy】项目之后就要在Maven中update一下所修改过的项目,否则也会出现
最后附上为了保证deploy打包编译正常,需要在Maven项目中的pom.xml添加以下配置:【指定打包成WAR的插件和不检查web.xml文件】
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>true</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
再次重申下:
如果按照上面的方法操作还是提示出错的话,记得去检查你们的Maven的各个级别的依赖关系,看清楚是不是在调用的时候有import进来但是在<dependencies>里面没有依赖,这也是造成文件锁定访问出错的原因之一。
每次修改和【clean deploy】项目之后就要在Maven中update一下所修改过的项目,否则也会出现这个问题。
同时注意要在pom中确保项目打包成WAR格式:
<packing>war</packing>
在Tomcat中重新Redeploy就可以了。不用通过Maven的clean deploy命令。在本地调试中直接发布。
问题解决!