2009-08-08 173 views
5

我試圖自動壓縮CSS和JS使用maven和this plugin。我想在執行目標時,戰爭壓縮,但我不盤算如何:maven yui壓縮戰爭:戰爭

<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> 

回答

3

一些奇怪的原因war:war不會調用該插件在相process-resources:我只是增加了一個自定義菜單上的NB 6.7調用第一compile,然後war:war

8

您需要在運行戰爭包裝到執行綁定到一個階段,因此它會被執行。這些是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 /資源,不的src/main/webapp的。 yuicompressor插件將處理src/main/webapp中的js文件,但它們不會被包含在最終的戰爭中。

更新2:在看到您的答案後重讀您的問題,我會誤讀您正在運行的目標。爲了避免運行兩個目標,你可以執行下列操作之一:

  1. 嘗試,而不是運行戰爭的目標,運行安裝,這將調用標準的生命週期,以及的YUICompressor插件會在被調用流程資源階段。
  2. 或者在上面的示例中將yuicompressor目標綁定到的階段更改爲,因此當您運行war:war目標時它將被激活。
+0

完成,但它並沒有下工作maven 2.2.0也不maven 2.1.0 – dfa 2009-08-08 12:20:54

+0

這對我的測試項目工作正常,壓縮文件輸出到目標/類 – 2009-08-08 12:35:28

+0

固定感謝:) – dfa 2009-08-09 10:49:23