如何使用yuicompressor-maven-plugin让maven与缩小的文件建立战争

所以我正在尝试一些我认为相当简单的东西,我基本上希望maven在构建战争之前为我缩小所有js和css文件。 我的插件看起来像这样:

 org.apache.felix maven-bundle-plugin true 1.0.0  META-INF  !test.impl,test* *  src/main/resources     net.alchim31.maven yuicompressor-maven-plugin 1.1    compress     true   

问题是YUI插件确实正确地缩小了文件,但是在构建战争之前,它看起来像是复制了我的主源目录中的所有文件,从而消除了YUI插件所做的更改。

我正在通过以下方式调用maven: mvn compile war:war 。 我已经玩了一段时间不同的设置,但到目前为止,我还没有找到解决方法。

我想要的是,在战争之后,从src目录复制了所需的文件,它将运行YUI插件,但我尝试了YUI插件上的所有阶段的排列,但这似乎没有任何区别。

我已经用Google搜索过了,但到目前为止我所阅读的几乎所有内容似乎都表明我应该像我一样放弃YUI插件并且一切都应该神奇地工作。 到目前为止,我似乎没有找到魔法。

会发生的是上面的配置在进程资源阶段运行压缩器,但是包阶段会用原始文件覆盖这些文件。

通过将阶段更改为包,它应该工作:

  package  compress  

现在压缩是在复制到目标的文件之后完成的,以便构建WAR内容。

发生这种情况的原因是,只压缩文件而不连接它们或用后缀重命名它们不是插件最常见的用例。

通常我们希望将文件压缩并连接到一个文件中,并为其指定一个新名称。

新名称通常类似于originalname-min.css / original.name-min.js,其中.min是后缀,因此删除上面配置中的nosuffix选项也可以。

编辑:记录示例

 [INFO] --- yuicompressor-maven-plugin:1.1:compress (default) @ yui-compressor-test - [INFO] prettify.css (817b) -> prettify.css (617b)[75%] [INFO] total input (1510b) -> output (1134b)[75%] 

接受的答案不起作用。

这个答案要好得多(正如koga在他的评论中指出的那样): https : //stackoverflow.com/a/11495021/11451

这是我最终做的事情:

第1步:缩小css和js

  com.samaxes.maven minify-maven-plugin 1.7.2   prepare-package  minify     UTF-8 true resources resources CLOSURE true ${project.build.directory}/minify  **/*.css   **/*.min.css   **/*.js   **/*.min.js    

第2步:使用缩小的文件覆盖战争中的css和js

  org.apache.maven.plugins maven-war-plugin 2.4    ${project.build.directory}/minify     

使用war生成器并添加配置以排除源文件。 例:

   org.apache.maven.plugins maven-war-plugin ${war-plugin.version}  js/**/*.js   

之后,您需要将目标文件包含在战争中。 你可以通过设置maven生命周期的“prepare-package”阶段(我正在使用Minify插件)并在Minify配置上添加文件(jsSourceIncludes,cssSourceIncludes,…)来实现这一点。

例如:

   com.samaxes.maven minify-maven-plugin 1.7.2   default-minify  minify  prepare-package  /js  /**/*.js      

你应该看看Minify Maven插件 ,这听起来像你需要的东西。
如果您需要任何帮助来配置它,请告诉我。

如上所述,maven-war-plugin会覆盖minify插件创建的文件。 似乎这是无法改变的。 但是,通过简单地改变项目结构可以实现想要的行为。

这里是我用我的项目做的例子。 我正在使用minify-maven-pluginspring框架,静态文件存储在静态目录中。

1)将静态目录从src / main / webapp移动src / main / resources

2)在pom.xml中更改minify插件配置。 所以source指向资源并指向类的目标点:

 src/main/resources target/classes static static 

3)改变弹簧配置。 所以spring从类路径提供静态文件:

  

现在

 mvn clean && mvn package 

使用/ WEB-INF / classes / static中的缩小文件生成正确的战争