maven yui压缩战争:战争

时间:2009-08-08 09:12:08

标签: java maven-2 yui-compressor

我正在尝试使用maven和this plugin自动压缩CSS和JS。我想在执行目标战时压缩,但我不知道如何:

<build>
  <finalName>${artifactId}-${version}-production</finalName>
  <plugins>
    <plugin>
      <groupId>net.sf.alchim</groupId>
      <artifactId>yuicompressor-maven-plugin</artifactId>
      <executions>
        <execution>
          <configuration>
            <gzip>true</gzip>
            <nosuffix>true</nosuffix>
          </configuration>
          <goals>
            <goal>compress</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

2 个答案:

答案 0 :(得分:8)

您需要将执行绑定到某个阶段,以便在运行war包装时执行该阶段。这些是你可以绑定到战争包装的available phases

<plugin>
  <groupId>net.sf.alchim</groupId>
  <artifactId>yuicompressor-maven-plugin</artifactId>
  <executions>
    <execution>
      <id>compress</id>
      <phase>process-resources</phase>
      ...<!--rest of config is fine-->

更新:js.gz文件是否未生成或未包含在战争中?

另外还有一件事要检查你是否还没有看到战争中的内容是资源应该在 src / main / resources 下,而不是 src / main / webapp < / em>的。 yuicompressor插件将处理 src / main / webapp 中的js文件,但它们不会包含在最后的战争中。

更新2:看到你的答案后重新阅读你的问题,我误读了你正在运行的目标。为避免实现两个目标,您可以执行以下任一操作:

  1. 尝试而不是运行war目标,运行 install package ,这将调用标准生命周期,yuicompressor插件将在process-resources阶段调用。
  2. 或者将yuicompressor目标在上面示例中绑定的阶段更改为 package ,以便在运行war:war目标时激活它。

答案 1 :(得分:3)

由于一些奇怪的原因war:war没有在阶段process-resources中调用插件:我刚刚在nb 6.7上添加了一个自定义菜单,首先调用compile,然后调用{{1} }