5

我正在尝试使用 maven 和这个插件自动压缩 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>
4

2 回答 2

8

您需要将执行绑定到一个阶段,以便在您运行 war 打包时执行它。这些是您可以绑定到战争打包的可用阶段。

<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下。yuicompressor 插件会处理src/main/webapp中的 js 文件,但它们不会包含在最终的战争中。

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

  1. 尝试运行installpackage而不是运行 war 目标,这将调用标准生命周期,并且 yuicompressor 插件将在 process-resources 阶段调用。
  2. 或者,将上例中 yuicompressor 目标绑定的阶段更改为打包,以便在运行 war:war 目标时激活它。
于 2009-08-08T12:05:15.307 回答
3

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

于 2009-08-09T10:49:05.723 回答