3

我将wro4j用于jscss聚合。因此,我使用我的js文件,在 maven 构建时,wro4j执行并创建我需要的唯一js文件。

有一个js文件具有基于pom.xml中的配置文件的几个变量(与环境相关,例如用于查找内容的 url)。

当我构建应用程序时,我可以在war文件中看到js文件中的替换变量。但是,当wro4j的插件生成聚合的js文件时,从webapps/js而不是从目标文件夹(这是正确的)获取文件,因此,聚合的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>
4

1 回答 1

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

于 2013-06-16T03:11:08.927 回答