yuicompressor-maven-plugin不受限于流程资源

时间:2012-08-30 19:15:21

标签: maven-2 pom.xml yui-compressor

我一直试图找出为什么在“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

1 个答案:

答案 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重新定义它们,但不能使用从未成为任何构建区域一部分的插件。