2012-02-17 32 views
0

我只想知道,如果我使用maven作爲構建工具開發spring mvc項目,並且在創建war文件後部署該應用程序時,它是否會因tomcat而產生衝突?建立在maven上的項目是否會在tomcat版本之間創建運行時衝突?

更具體地說,讓我來問你一個例子:
在開發過程中,我想我有tomcat版本6.0.xx,並在生產服務器上,我想我有tomcat版本是6.x.x. 這會造成衝突嗎?

希望你有我的問題..

+0

關於你在談論什麼樣的衝突?你能更具體地說... – khmarbaise 2012-02-17 13:59:27

+0

我正在談論版本衝突 – 2012-02-23 11:37:03

回答

1

它可能。

通常,如果您依賴於Tomcat及其運行時環境中的版本,則需要將依賴項的範圍設置爲「提供」,如下所示,這意味着maven不會將其與您的應用程序:

<dependency> 
    <groupId>com.abc.xyz</groupId> 
    <artifactId>runtimepackage</artifactId> 
    <version>1.2.3</version> 
    <scope>provided</scope> 
</dependency> 

我最近遇到了不同版本的jetty這個問題。作爲使用碼頭6,同時部署到運行時環境中的另一封裝用碼頭8.

  • 碼頭6使用servlet的API 2.5(沒有方法稱爲getHeaders())
  • 碼頭提供這是作用域一個包8使用servlet的API 3.0(有一個方法叫做getHeaders())

我使用碼頭8(因此servlet的API 3.0)模塊,並從HttpServletRequest對象調用getHeaders()。當我在當地跑步時,一切都很好。但是當調用deploy和getHeaders()時,NoSuchMethod異常會觸發。請注意,我隨後更改了本地設置,以便與環境更緊密地匹配並能夠重現問題。

希望是有道理的,並幫助

相關問題