2012-10-10 55 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>