maven插件对我来说工作得很慢。在我的项目中,webapp 文件夹有近 15000 个小文件(图像、jsp、css 等)。当我用 maven 组装它时,它首先将所有文件复制到 target/myProject-1.0.0
目录,然后从中构建myProject-1.0.0.war
文件。复制过程需要 10 分钟,构建.war
需要 2 分钟。
正如我所看到的,如果直接从 webapp 文件夹组装.war
文件,构建速度可能会快得多。可以做到吗?
在 war 插件的配置部分,使用 warSourceExcludes 排除不需要的文件和目录。在下面的示例中,目录组件和node_modules将从爆炸战争和最终战争中排除。就我而言,这将构建时间从 3 分钟减少到 14 秒。
<configuration>
<warSourceExcludes>
components/**,
node_modules/**
</warSourceExcludes>
</configuration>
我建议您将使用maven-war-plugin
的war:inplace
目标与自定义maven-antrun-plugin
任务一起使用。
war:inplace
将在 WAR 源目录中生成 Web 应用。它将在webapp
下创建所有必要的额外文件夹。
可以根据您的特殊要求定制antrun:run
以创建战争。
这可能会提高性能,因为您拥有的大多数资源文件仍将位于 webapp
文件夹中,不会被复制。
只想提一下,有一个useCache
设置可以显着提高性能(~3 分钟而不是 12 分钟)。但是,它仅适用于开发,不适用于应始终执行干净构建的 CI 服务器。