在发布时修改GWT的user.agent

时间:2009-06-07 23:26:06

标签: maven-2 gwt

开发时,我将user.agent属性设置为单个值,以缩短编译时间。发布时,我有一个为所有用户代理构建的WAR文件。

我很遗憾似乎忘记了切换属性:

  • 浪费开发时间等待编译,或
  • 准备一个浏览器支持不完整的WAR文件(谢天谢地尚未部署)。

我想自动执行此操作,最好使用maven-release-plugin。

2 个答案:

答案 0 :(得分:7)

您希望拥有2个不同的.gwt.xml文件 - 一个用于开发,一个用于生产。

Developer Guide/Organizing projects的'重命名模块'部分有一个很好的例子。

用于开发的gwt.xml文件将继承自用于生产的gwt.xml文件,并设置user.agent属性。 e.g:

<module rename-to="com.foo.MyModule">
  <inherits name="com.foo.MyModule" />
  <set-property name="user.agent" value="ie6" />
</module>

现在,在进行开发时,您将使用开发gwt.xml文件,以及进行生产构建时。你会使用生产gwt.xml文件。


使用Maven实现此目的的最简单方法是使用配置文件激活开发模块。我已经在Maven Recipe : GWT development profile详细介绍了这一点。

答案 1 :(得分:2)

创建一个MavenFilteredUserAgent模块,用于从pom.xml中的各种配置文件设置user.agent

<强> MavenFilteredUserAgent.gwt.xml

...
<set-property name="user.agent" value="${gwt.compile.user.agent}" />
...

<强>的pom.xml

...
<properties>
  <!-- By default we still want all five rendering engines when none of the following profiles is explicitly specified -->
  <gwt.compile.user.agent>ie6,ie8,gecko,gecko1_8,safari,opera</gwt.compile.user.agent>
</properties>
<profiles>
  <profile>
    <id>gwt-firefox</id>
    <properties>
      <gwt.compile.user.agent>gecko1_8</gwt.compile.user.agent>
    </properties>
  </profile>
</profiles>
<!-- Add additional profiles for the browsers you want to singly support -->
....
<build>
  <resources>
    <resource>
      <!-- Put the filtered source files into a directory that later gets added to the build path -->
      <directory>src/main/java-filtered</directory>
      <filtering>true</filtering>
      <targetPath>${project.build.directory}/filtered-sources/java</targetPath>
    </resource>
    <resource>
      <directory>${project.basedir}/src/main/resources</directory>
    </resource>
    </resources>
  <plugins>
  ...
  <plugin>
    <!-- Add the filtered sources directory to the build path-->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.5</version>
    <executions>
      <execution>
        <id>add-source</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>add-source</goal>
        </goals>
        <configuration>
          <sources>
            <source>${project.build.directory}/filtered-sources/java</source>
          </sources>
        </configuration>
      </execution>
    </executions>
  </plugin>
  ...
</plugins>
...

让所有模块继承MavenFilteredUserAgent模块。

然后你可以像这样构建firefox。

mvn install -Pgwt-firefox

http://9mmedia.com/blog/?p=854有更多详情。