2011-12-01 67 views
2

我想壓縮所有的javascript文件,並使用YUICompressor將它們聚合到 ,我看到有一個maven插件允許我使用 這樣做。我大部分工作。如何讓maven yuicompressor和tomcat插件發揮不錯

我也使用Mojo tomcat插件。當我去運行 tomcat:運行目標時,tomcat不會從目標的輸出 目錄中讀取(這是YUI壓縮器將我的javascript文件放在哪裏) - 而是它從我的「src中的實際源文件讀取/ main/ webapp/scripts「目錄。當然,彙總的JavaScript文件 (all.js)不存在。

我有幾個問題。

  1. 我怎樣才能獲得Tomcat插件讀取目標的輸出文件夾 的YUI壓縮機插件創建的?

  2. 每次我想在開發過程中更新我的JavaScript文件時,是否必須運行yui壓縮機maven目標?

  3. 有沒有更好的方法來實現這一目標?本質上,我的最終目標是 能夠開發JavaScript並在 開發模式下測試我的源文件,但我想壓縮和聚合文件, 使用all.js腳本,當應用程序在生產 模式下運行時。

雖然Rails的人都肯定了這一點,這似乎 是一個不平凡的事情與Maven和Spring。

我很感激我如何能得到這個 正確運行的任何和所有援助。謝謝!

回答

1

我只是在調查這個非常的問題,發現我的答案通過查看plugin documentation

MVN tomcat的:運行 - 運行使用嵌入式Tomcat服務器的當前項目作爲一個動態的Web應用程序 。

這實際上意味着當嵌入式tomcat運行時還沒有達到包執行階段。

答案是改爲使用:

MVN的tomcat:運行戰爭 - 運行使用嵌入式Tomcat服務器的當前項目作爲打包的Web應用程序 。

這使得Maven構建以儘可能獲得包裝的WAR文件,因此允許的YUICompressor - Maven的插件做什麼它需要嵌入的Tomcat啓動之前。

-1

至於不得不每次運行它,都應該將yui插件的運行附加到「生成源」執行階段。

以下內容添加到您的插件(的重要組成部分,是「相」元素,將其連接到生命週期):

<plugin> 
    <groupId>net.alchim31.maven</groupId> 
    <artifactId>yuicompressor-maven-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>generate-sources</phase> 
     <goals> 
      <goal>compress</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration>...</configuration>  
    </plugin> 

這樣的插件會運行期間產生來源階段每建。所以,任何時候你改變你已配置,輸出.js文件將盡快爲你運行像更新的插件您的Java腳本:

mvn compile 
mvn test 
mvn install 
mvn package 

等等。


上述聲明導致精縮(以及可能的彙總)文件被前面的生命週期,但tomcat的創建:運行無法找到他們!

相關問題