我有一個JavaScript文件,用於使用Google Analytics(分析)跟蹤事件。我爲分段和生產環境創建了不同的帳戶。調用GA代碼的腳本擁有我賬戶ID的佔位符。帳戶ID已在過濾器文件中指定。使用maven-war插件中的webResources元素,我們能夠成功替換最終WAR文件中的屬性。如何使用maven縮小過濾後的JavaScript文件?
現在,我們還使用maven-yuicompressor插件來縮小和聚合我們所有的javascript文件。問題是,如果我將minify目標的執行附加到包階段,那麼WAR會在Javascript被縮小之前創建。如果我更早地將縮小目標附加到任何事情上,那麼直到縮小時才生成無效文件。
所以,我正在尋找一種方法來運行WAR插件複製過濾JS文件和創建WAR文件之間的縮小目標。這裏是我的pom.xml的相關部分:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<webResources>
<resource>
<directory>src/main/webapp/js</directory>
<targetPath>js</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<linebreakpos>-1</linebreakpos>
<nosuffix>true</nosuffix>
<force>true</force>
<aggregations>
<aggregation>
<output>${project.build.directory}/${project.build.finalName}/js/mysite-min.js</output>
<inputDir>${project.build.directory}/${project.build.finalName}/js</inputDir>
<includes>
<include>jquery-1.4.2.js</include>
<include>jquery-ui.min.js</include>
<include>ga-invoker.js</include>
</includes>
</aggregation>
</aggregations>
</configuration>
</plugin>
可以綁定到'prepare-package'嗎? – 2011-05-20 14:45:24
正如我之前提到的那樣,在包裝階段之前不能使用,因爲過濾器在此之前尚未應用。戰爭插件複製網絡資源並將過濾器作爲程序包階段本身的一部分。 – Chandranshu 2011-05-23 08:14:14