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 パッケージの実行時に実行されるように、実行をフェーズにバインドする必要があります。これらは、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 ファイルは生成されていないのでしょうか、それとも単に戦争に含まれていないのでしょうか?

戦争でまだコンテンツが表示されないかどうかを確認するもう 1 つのことは、リソースがsrc/main/webappではなくsrc/ main/resourcesの下にある必要があることです。yuicompressor プラグインはsrc/main/webapp内の js ファイルを処理しますが、最終戦争には含まれません。

更新 2: 回答を見た後で質問を読み直してください。実行している目標を読み違えていました。2 つの目標を実行しないようにするには、次のいずれかを実行します。

  1. war ゴールを実行する代わりに、installまたはpackageを実行してみてください。これにより、標準のライフサイクルが呼び出され、yuicompressor プラグインが process-resources フェーズで呼び出されます。
  2. または、上記の例で yuicompressor ゴールがバインドされているフェーズを package に変更して 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 に答える