У меня есть файл javascript, который используется для отслеживания событий с помощью Google Analytics. Я создал разные учетные записи для промежуточной и производственной среды. Сценарий для вызова кода GA имеет место для идентификатора моей учетной записи. Идентификаторы учетных записей указаны в файлах фильтров. Используя элемент webResources в плагине maven-war, мы можем успешно заменить свойство в окончательном файле WAR.
Теперь, мы также используем плагин maven-yuicompressor для минимизации и агрегирования всех наших файлов javascript. Проблема в том, что если я присоединяю выполнение цели минификации к фазе пакета, 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>