【发布时间】:2023-03-30 09:57:01
【问题描述】:
我想知道将“现代 JavaScript 构建工作流程”集成到生成 WAR 工件的 Maven 构建中的任何“最佳实践”。
我发现了几个处理连接和缩小的 maven 插件:
- WRO4J:https://code.google.com/p/wro4j/wiki/MavenPlugin
- 缩小 Maven 插件:https://github.com/samaxes/minify-maven-plugin
- 小唯:http://alchim.sourceforge.net/yuicompressor-maven-plugin/
但是我仍然想念它们如何融入完整的构建工作流程,因为我认为必须能够打开和关闭连接/缩小:
对于开发,我想构建一个不包含串联/缩小资源的 WAR,以便我可以方便地调试。对于生产版本,我想生成一个包含连接/缩小资源的 WAR。
此外,对于生产版本,我必须“重写”我的 html 中的脚本 URL 以指向脚本的连接/缩小版本。
在 JavaScript 世界中,我会将 Grunt 与不同的 grunt 任务(uglify、usemin)一起使用来实现上述工作流程。如何在 Maven 构建中实现相同的目标?
【问题讨论】:
-
我知道这是一个旧线程,我在一个完全不同的问题上进行了搜索。所以我读了这个问题,我认为@JamesMurphy 提供的答案是可以的,关于你在评论
struggling with how can I "rewrite" my HTML so that it uses the non-minified or the minified JavaScript中提到的第二部分,你为什么需要使用不同的文件?我会在我的 htmlsomeScritp.js中使用它,在开发中它不会被缩小,而在生产中它会被缩小。这会是一个好的解决方案吗? -
@JorgeCampos 现代前端项目的标准优化步骤是缩小、连接/捆绑和缓存破坏。对于开发,您需要细粒度的文件,而在生产中,您只需要包含所有资产(JS、CSS ...)的极少数文件。将多个文件优化为几个文件称为concatenation 或bundling。通常,您还希望通过向文件名添加哈希来“缓存”文件。这些新文件必须在您的 html 中以
<script>-tags 的形式引用。在最近的项目中,我使用 WebPack,完全跳过 Maven 集成。 -
感谢您提供信息并提醒@jbandi :)
标签: java javascript maven war gruntjs