2012-04-12 124 views
0

我通過導入一個war文件創建了一個eclipse web項目。最初,戰爭文件中沒有源代碼。我想通過根據不同的配置文件動態改變一個屬性文件的內容來從這個項目構建一個新的war文件,以便構建的war文件可以部署在不同的環境中(開發和生產)。maven如何才能從戰爭文件中導入的項目構建戰爭?

但是由於在原始war文件中沒有源代碼,因此在項目中沒有源代碼,在將此項目轉換爲maven項目並在pom.xml中將包裝設置爲war後,maven顯示以下錯誤:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war >(default-war) on project birt: Error assembling WAR: webxml attribute is required (or pre->existing WEB-INF/web.xml if executing in update mode)

我假設這個錯誤是由於我的項目中沒有這樣的文件夾(/ src/main/webapp)造成的。我的項目的結構如下:

drwxrwxr-x 3 kewei kewei 4096 12 avril 15:55 build

-rw-rw-r-- 1 kewei kewei 375 12 avril 16:10 pom.xml

drwxrwxr-x 3 kewei kewei 4096 12 avril 15:54 src

drwxrwxr-x 5 kewei kewei 4096 12 avril 16:12 target

drwxrwxr-x 10 kewei kewei 4096 12 avril 15:55 WebContent

src文件夾裏沒有東西,一切都在WebContent文件夾中。

我可以通過更改屬性文件並將項目導出到war文件(無需maven)來完成這項工作。但有沒有更聰明的方法?

也許maven的目的不是爲了做這種構建?在這種情況下,我如何通過根據不同配置文件動態更改屬性文件的內容來構建不同的戰爭?

謝謝!

回答

1

如果你真的很喜歡應對WebContent而不是maven方式,其中的一切都在src/main/webapp等之下,你可以改變maven-war-plugin的配置以適應你的需求。但我可以重新考慮只爲第一步做配置。運行後,將項目佈局更改爲maven默認值(conventsions),使其更加輕鬆。

+0

使用maven-war-plugin的確解決了我的問題。我將WebContent設置爲webResources並添加了一個根據我使用的配置文件動態更改屬性文件內容的過濾器。非常感謝你們! – 2012-04-16 09:44:55

1

khmarbaise是正確的,但我非常強烈地建議,如果你打算使用Maven,那麼你使用maven的約定來構造你的代碼樹。

Maven是一個神奇的工具,只要你做的一切正好,因爲它想要你做的。如果你偏離了目標,有(或可能)解決方法來實現你的目標,但這通常是痛苦的。