2

我一直在试图弄清楚为什么 yuicompressor-maven-plugin 在“mvn package”期间没有执行。我可以在下面链接中描述的独立任务中执行它,但不知何故,插件不会从 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>

我读过类似的帖子,但无法弄清楚为什么它不受“流程资源”的限制。Phase 和 Goal 是明确设置的,所以不确定为什么不调用它。有没有办法调试为什么在“mvn package”期间不调用 yuicompressor-maven-plugin?我使用 Maven 2.2.1。也许我的 Maven 版本不适用于插件?

感谢您的帮助,

山市

4

1 回答 1

2

您只需要将 pluginManagement 区域的运行结果放入通常的插件区域,例如:

<build>
  <plugins>
    <plugin>
      <groupId>net.alchim31.maven</groupId>
      <artifactId>yuicompressor-maven-plugin</artifactId>
      <version>1.3.0</version>
      ....
    </plugin>
  </plugins>
</build>

在 pluginManagement 中,您仅定义插件的默认值,特别是版本,但您实际上并不一定要真正执行。对于其他插件等,这会导致它们已经在 supoer pom 的构建区域中定义,因此这使您有机会通过 pluginManagement 重新定义它们,但不能使用从未属于任何构建区域的插件。

于 2012-08-31T06:03:39.237 回答