我可以在Maven中推迟执行插件后的资源过滤吗?

时间:2013-06-14 19:03:30

标签: maven resources filtering pom.xml wro4j

我正在使用 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>

1 个答案:

答案 0 :(得分:2)

您可以尝试设置<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