之前出現這個問題的時候一直沒有得到很好的解決方案,在網絡上面找到的也是不大適用於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命令。在本地調試中直接發佈。
問題解決!