【发布时间】:2011-08-29 11:25:44
【问题描述】:
我有一个 javascript 文件,用于使用 Google 分析跟踪事件。我为登台和生产环境创建了不同的帐户。调用 GA 代码的脚本有一个占位符作为我的帐户 ID。帐户 ID 已在过滤器文件中指定。使用 maven-war 插件中的 webResources 元素,我们能够成功地替换最终 WAR 文件中的属性。
现在,我们还使用 maven-yuicompressor 插件来缩小和聚合我们所有的 javascript 文件。问题是,如果我将 minify 目标的执行附加到 package 阶段,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? -
正如我之前提到的,在包阶段之前附加到任何东西都不起作用,因为直到那时还没有应用过滤器。 war 插件复制 Web 资源并将过滤器应用为打包阶段本身的一部分。
标签: javascript maven filter minify