所以我正在尝试一些我认为相当简单的事情,我基本上希望 Maven 在构建 war 之前为我缩小所有的 js 和 css 文件。我的插件看起来像这样:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<version>1.0.0</version>
<configuration>
<manifestLocation>META-INF</manifestLocation>
<instructions>
<Export-Package>!test.impl,test*</Export-Package>
<Import-Package>*</Import-Package>
<!--
add ,plugin.xml if it's present i.e.
src/main/resources,plugin.xml
-->
<Include-Resource>src/main/resources</Include-Resource>
</instructions>
</configuration>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<nosuffix>true</nosuffix>
</configuration>
</plugin>
问题是 YUI 插件确实正确地缩小了文件,但就在 war 构建之前,它看起来像是从我的主源目录复制了所有文件,从而消除了 YUI 插件所做的更改。
我通过以下方式调用 maven:mvn compile war:war
。我已经尝试了一段时间不同的设置,但到目前为止我还没有找到解决这个问题的方法。
我想要的是在 war 从 src 目录复制它需要的文件后它会运行 YUI 插件,但我尝试了 YUI 插件上的所有阶段排列,但似乎没有有所作为。
我用谷歌搜索了一下,但到目前为止我读到的几乎所有内容似乎都表明我应该只需要像我一样将 YUI 插件放在那里,一切都应该神奇地工作。到目前为止,我似乎还没有发现魔法。
最佳答案
已接受的答案无效。
这个答案要好得多(正如 koga 在他的评论中指出的那样): https://stackoverflow.com/a/11495021/11451
这是我最后做的:
第 1 步:缩小 css 和 js
<plugin>
<groupId>com.samaxes.maven</groupId>
<artifactId>minify-maven-plugin</artifactId>
<version>1.7.2</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>minify</goal>
</goals>
</execution>
</executions>
<configuration>
<charset>UTF-8</charset>
<skipMerge>true</skipMerge>
<cssSourceDir>resources</cssSourceDir>
<jsSourceDir>resources</jsSourceDir>
<jsEngine>CLOSURE</jsEngine>
<nosuffix>true</nosuffix>
<webappTargetDir>${project.build.directory}/minify</webappTargetDir>
<cssSourceIncludes>
<cssSourceInclude>**/*.css</cssSourceInclude>
</cssSourceIncludes>
<cssSourceExcludes>
<cssSourceExclude>**/*.min.css</cssSourceExclude>
</cssSourceExcludes>
<jsSourceIncludes>
<jsSourceInclude>**/*.js</jsSourceInclude>
</jsSourceIncludes>
<jsSourceExcludes>
<jsSourceExclude>**/*.min.js</jsSourceExclude>
</jsSourceExcludes>
</configuration>
</plugin>
第二步:用缩小文件覆盖war中的css和js
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webResources>
<resource>
<directory>${project.build.directory}/minify</directory>
</resource>
</webResources>
</configuration>
</plugin>
关于java - 如何使用 yuicompressor-maven-plugin 让 maven 使用缩小文件构建 war ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823752/