Могу ли я отложить в Maven фильтрацию ресурсов после выполнения плагина?

Я использую wro4j для объединения js и css. Итак, я работаю со своими файлами js, и во время сборки maven wro4j выполняет и создает уникальные файлы js, которые мне нужны.

Существует один файл js с парой переменных, основанных на профиле из pom.xml (относящихся к среде, например URL-адрес для поиска чего-либо).

Когда я создаю приложение, я вижу внутри файла war замененные переменные в файле js. Но когда подключаемый модуль для wro4j создает агрегированный файл js, он берет файлы из webapps/js, а не из target (и это правильно), поэтому в агрегированном файле js вместо замененных переменных есть переменные выражения.

Я хочу отложить выполнение фильтрации, чтобы запустить его после подключаемого модуля wro4j. Это возможно?

Это переменные в файле js (он называется global.js):

var mvnProfileEnvName = "${environment.name}";
var mvnProfileFullSearchUrl = "${full.search.url}";

И у меня есть следующий код в pom.xml

<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <environment.name>dev</environment.name>
      <full.search.url>url/for/dev</full.search.url>
    </properties>
  </profile>
  <profile>
    <id>test</id>
    <properties>
      <environment.name>test</environment.name>
      <full.search.url>url/for/test<full.search.url>
    </properties>
  </profile>
  <profile>
    <id>prod</id>
    <properties>
      <environment.name>prod</environment.name>
      <full.search.url>url/for/prod</full.search.url>
    </properties>
  </profile>
</profiles>
<build>
  <resources>
    <resource>
      <directory>${basedir}/src/main/webapp/js</directory>
      <filtering>true</filtering>
      <includes>
        <include>global.js</include>
      </includes>
    </resource>
    <resource>
      <directory>${basedir}/src/main/webapp/wro</directory>
      <filtering>true</filtering>
    </resource>
  </resources>

  </plugins>
    <plugin>
      <groupId>ro.isdc.wro4j</groupId>
      <artifactId>wro4j-maven-plugin</artifactId>
      <version>${wro4j.version}</version>
      <executions>
        <execution>
          <phase>prepare-package</phase>
          <goals>
            <goal>run</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <minimize>true</minimize>
        <jsDestinationFolder>${basedir}/src/main/webapp/wro/js/</jsDestinationFolder>
        <cssDestinationFolder>${basedir}/src/main/webapp/wro/css/</cssDestinationFolder>
      </configuration>
    </plugin>
  </plugins>
<build>

person Agorreca    schedule 14.06.2013    source источник
comment
Возможно, это связано с этим вопросом/ответом на stackoverflow.   -  person user944849    schedule 15.06.2013


Ответы (1)


Вы можете попробовать установить <filtering>false</filtering>, а затем вручную настроить выполнение maven-resources-plugin на более позднем этапе с включенной фильтрацией. Поместите это после объявления плагина wro4j:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <executions>
    <execution>
      <id>filter-resources</id>
      <phase>prepare-package</phase>
      <goals><goal>resources</goal></goals>
    </execution>
  </executions>
</plugin>

http://maven.apache.org/plugins/maven-resources-plugin/resources-mojo.html

person noahlz    schedule 16.06.2013