Изменение user.agent GWT при выпуске - PullRequest
9 голосов
/ 08 июня 2009

При разработке я установил для свойства user.agent одно значение, чтобы сократить время компиляции. При выпуске у меня есть файл WAR, созданный для всех пользовательских агентов.

Я, к сожалению, все время забываю поменять свойство:

  • тратить время на разработку, ожидая компиляции, или
  • подготовка файла WAR с неполной поддержкой браузера (к счастью, еще не развернут).

Я хочу автоматизировать это, предпочтительно используя плагин maven-release-plugin.

Ответы [ 2 ]

7 голосов
/ 08 июня 2009

Вы хотите иметь 2 разных файла .gwt.xml - один используется для разработки, а другой - для производства.

Хороший пример есть в разделе «Переименование модулей» Руководство разработчика / Организация проектов .

Файл 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: профиль разработки GWT .

2 голосов
/ 02 марта 2011

Создайте модуль MavenFilteredUserAgent, который устанавливает user.agent из различных профилей в файле pom.xml.

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 имеет более подробную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...