我一直试图找出为什么在“mvn package”中没有执行yuicompressor-maven-plugin。我可以在一个独立的任务中执行它,如下面的链接所述,但不知何故插件不会从maven生命周期中调用。
http://davidb.github.com/yuicompressor-maven-plugin/usage_compress.html
这是我使用的示例pom.xml,
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!-- yuicompressor-maven-plugin -->
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.3.0</version>
<executions>
<execution>
<id>compress</id>
<phase>process-resources</phase>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<linebreakpos>-1</linebreakpos>
<encoding>UTF-8</encoding>
<nosuffix>true</nosuffix>
<force>true</force>
<jswarn>false</jswarn>
<webappDirectory>${project.build.directory}/minified</webappDirectory>
<aggregations>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/js/abc-min.js</output>
<includes>
<include>${basedir}/src/main/webapp/js/comments.txt</include>
<include>${project.build.directory}/minified/js/def.js</include>
</includes>
</aggregation>
</aggregations>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<warSourceExcludes>js/**/*.js,js/**/*.txt,css/**/*.css,css/**/*.txt</warSourceExcludes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
我已阅读类似的帖子,但无法弄清楚为什么它不受“流程资源”的约束。明确设置阶段和目标,因此不确定为什么不调用它。有没有办法调试为什么在“mvn包”期间没有调用yuicompressor-maven-plugin?我使用maven 2.2.1。也许我的Maven版本不适用于该插件?
感谢您的帮助,
syamashi
答案 0 :(得分:2)
您只需将pluginManagement区域的耗尽放入通常的插件区域,如:
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.3.0</version>
....
</plugin>
</plugins>
</build>
在pluginManagement中,您只定义插件的默认值,特别是verison,但您实际上并不限于真正的执行。对于其他插件等,这项工作会导致在supoer pom的构建区域中定义,因此这使您有机会通过pluginManagement重新定义它们,但不能使用从未成为任何构建区域一部分的插件。