2011-10-29 37 views
4

我需要部署Web應用程序的生產版本。到目前爲止,我一直在使用mvn jetty:run進行測試。我以前使用過真正的碼頭安裝,但是當你想在同一個Web服務器上進行多次戰爭時,它們似乎只是必需的。在某些方面,這是最直接的(mvn package並複製它)。部署碼頭應用程序的最佳方式 - 選項太多?

我的其他選項來創建啓動服務器運行的JAR(mvn assembly:single),但我需要讓靜態內容src/main/webapp供應調整配置和web.xml可以找到。

我也讀過關於「可運行戰爭」的內容。這可能會避免src/main/webapp問題,因爲這些文件已經放置在warfile中。然而,我不知道如何去做這件事。

我也可以堅持mvn jetty:run,但這看起來並不是最好的選擇,因爲生產部署與代碼綁定而不是獨立的jar。

對這些不同方法的最佳方式或優缺點有何看法?我錯過了一些選擇嗎?

回答

2

jetty-console-maven-plugin從simpleri城市使用簡單,效果很好。當你運行mvn package時,你會得到兩場戰爭 - 一場是可執行的。 java -jar mywar.war --help給出了用法,它允許一些配置(端口等)。

1

我不是那熟悉的行家,但是這是我們如何使用嵌入的Jetty接近部署:

我們創建嵌入碼頭應用程序,擠滿了必要的lib罐子單文件JAR。

我們將靜態內容部署在WAR文件中(您也可以將其包裝到JAR中)。一切由ANT文件生成:

1)構建靜態文件WAR 2)複製WAR(這也產生了web.xml)到應用程序資源 3)編譯可執行的JAR

爲了讓嵌入式碼頭「發現並滿足」您的靜態文件,具有WebAppContext增加戰爭的碼頭處理程序:

Server jetty = new Server(port); 
HandlerList handlers = new HandlerList(); 
WebAppContext staticContentAsWar = new WebAppContext(); 
staticContentAsWar.setContextPath("/static/"); 
staticContentAsWar.setWar(resource_Path_to_WAR); 
handlers.addHandler(set); 
jetty.setHandlers(handlers); 
jetty.start(); 

HTH

相關問題