2012-10-10 56 views
9

maven插件對我來說工作起來非常緩慢。在我的項目中,webapp文件夾有近15000個小文件(圖像,jsp,css等)。當我用maven組裝它時,它首先將所有文件複製到target/myProject-1.0.0目錄,然後從中建立myProject-1.0.0.war文件。複製過程需要10分鐘,建立.war需要2分鐘。加速maven war插件

正如我所看到的,如果.war文件將直接從webapp文件夾中組裝,速度會更快。有可能嗎?

+0

直接從'src/main/webapp'文件夾?那麼依賴性,資源等呢? – maba

+0

@maba當然,爲什麼不呢? jar.exe可以存檔來自多個位置的文件。螞蟻任務''很容易做到這一點。 – kan

+0

這不是maven的方式。你可以使用['maven-antrun-plugin'](http://maven.apache.org/plugins/maven-antrun-plugin/)來使用那個ant任務。 – maba

回答

4

我建議您使用war:inplace目標maven-war-plugin以及自定義maven-antrun-plugin任務。

war:inplace將在WAR源目錄中生成Web應用程序。它將在webapp下創建所有必需的額外文件夾。

antrun:run可根據您的特殊要求進行定製以創建戰爭。

這可能會提高性能,因爲您擁有的大多數資源文件仍將位於webapp文件夾中,並且不會被複制。

+0

它節省了一些荒謬的複製,但戰爭:inplace也將所有庫複製到WEB-INF/lib中,這也是不必要的和麻煩的。 8-(有沒有人真的試過這個? –

3

只是想提一下,有一個useCache設置,顯着提高性能(約3分鐘,而不是12)。然而,它僅適用於開發,不適用於應始終執行清理構建的CI服務器。

+1

你能否包含你在這裏描述的Maven配置? –

1

在war插件的配置部分,使用warSourceExcludes排除不需要的文件和目錄。在下面的示例中,目錄組件和node_modules將從爆炸戰爭以及最終戰爭中排除。在我的情況下,這會將構建時間從3分鐘縮短到14秒。

 <configuration> 
       <warSourceExcludes> 
       components/**, 
       node_modules/** 
       </warSourceExcludes> 
     </configuration>