基于Maven的JavaScript小型化工作流

基于Maven的JavaScript小型化工作流,java,javascript,maven,war,gruntjs,Java,Javascript,Maven,War,Gruntjs,我想知道有什么“最佳实践”可以将“现代JavaScript构建工作流”集成到生成WAR工件的Maven构建中 我发现了几个maven插件,可以处理连接和缩小: WRO4J: 缩小Maven插件: 尤伊: 但是,我仍然不知道它们如何适应完整的构建工作流,因为我认为必须能够打开和关闭连接/缩小: 对于开发,我希望构建一个不包含连接/缩小资源的WAR,以便方便地进行调试。对于生产构建,我希望生成一个包含连接/缩小资源的WAR 此外,对于生产构建,我必须“重写”html中的脚本URL,以指向脚本的串

我想知道有什么“最佳实践”可以将“现代JavaScript构建工作流”集成到生成WAR工件的Maven构建中

我发现了几个maven插件,可以处理连接和缩小:

  • WRO4J:
  • 缩小Maven插件:
  • 尤伊:
但是,我仍然不知道它们如何适应完整的构建工作流,因为我认为必须能够打开和关闭连接/缩小:

对于开发,我希望构建一个不包含连接/缩小资源的WAR,以便方便地进行调试。对于生产构建,我希望生成一个包含连接/缩小资源的WAR

此外,对于生产构建,我必须“重写”html中的脚本URL,以指向脚本的串联/缩小版本


在JavaScript世界中,我会将Grunt与不同的Grunt任务(uglify、usemin)一起使用,以实现上述工作流。如何在Maven构建中实现同样的功能?

您应该能够使用不同的配置文件运行Maven,这样您就可以缩小生产构建的js脚本,但为了调试的目的,可以使用不同的配置文件在本地构建它

网上有更多关于这方面的信息


希望这有帮助。

既然您提到了Grunt,您是否考虑过直接从Maven构建中调用Grunt任务?这不是一个完美的解决方案,但它为您提供了更多的选择,而无需依赖Maven插件。


还有,这个主题:

谢谢你的回答。使用Maven概要文件解决了我问题的第一部分:如何为不同的构建打开和关闭缩小。然而,我仍然在挣扎如何“重写”我的HTML,使其使用非精简或精简的JavaScript。还有其他Maven插件吗?大家好,没问题。看起来答案已经在另一个堆栈溢出问题中找到了。看起来您可以使用YUICompressor ant target。您可以使用maven antrun插件在maven构建中的任何位置执行ant目标。我认为这就足够让你做你想做的事情了。在回答你的问题时,理论上你可以编写一个bash脚本,扫描你所有的HTML文件,如果它们位于同一个目录中,用*.min.js替换*.js文件。虽然我不知道是否有什么现成的东西可以帮它。它可能有点定制,所以不幸的是,您可能必须自己编写。如果您使用的是PHP甚至JSP之类的脚本语言,那么您可以编写一个方法来检查是否存在允许构建使用小型js的设置。在这种情况下,它可以根据需要在*.js前面加上*.min.js。@Dropkick:谢谢你的评论。我仍然希望有更成熟的东西在那里,我还没有找到。。。我只是觉得这应该是一个标准的问题,应该有一个标准的解决方案…不错的选择。Grunt可能会解决这个问题,因为你只需要运行与maven目标相关的Grunt任务。我知道这是一个旧线程,我在一次搜索中发现了一个完全不同的问题。所以我读了这个问题,我认为@JamesMurphy提供的答案是可以的,关于你在评论
中提到的第二部分,我正在努力“重写”我的HTML,以便它使用非精简的或精简的JavaScript,为什么你需要使用不同的文件?我会在我的html
someScritp.js
中使用它,在开发中它将是非小型化的,在生产中它将是小型化的。这是一个好的解决方案吗?@JorgeCampos现代前端项目的标准优化步骤是缩小、连接/捆绑和缓存破坏。对于开发,您需要细粒度的文件,而在产品中,您只需要极少数包含所有资产的文件(JS、CSS…)。将多个文件优化为几个文件称为连接或绑定。通常,您还希望通过向文件名添加哈希来“缓存”文件。这些新文件必须在html中作为
-标记引用。在最近的项目中,我使用的是WebPack,完全跳过了Maven集成。感谢您提供的信息和提示@jbandi:)