2009-06-07 19 views
9

Al desarrollar, configuré la propiedad user.agent en un valor único, para mantener los tiempos de compilación reducidos. Al liberar, tengo un archivo WAR creado para todos los agentes de usuario.Modificar user.agent de GWT al liberar

por desgracia estar al nivel de olvidar para cambiar la propiedad, ya sea:

  • perder el tiempo de desarrollo a la espera de compilaciones o
  • preparar un archivo WAR con el apoyo del navegador incompleta (todavía no implementado, por suerte).

Quiero automatizar esto, de preferencia usando maven-release-plugin.

+0

¿Es su sitio web públicamente accesible? ¿Dónde? –

+0

Me gustaría verlo también para Ant. – Glenn

+0

@Don Branson: no, el sitio no es público. –

Respuesta

7

Desea tener 2 archivos .gwt.xml diferentes, uno utilizado para el desarrollo y el otro para la producción.

Hay un buen ejemplo en la sección 'Cambiar el nombre de los módulos' de Developer Guide/Organizing projects.

El archivo gwt.xml utilizado para el desarrollo heredaría del archivo gwt.xml utilizado para la producción y también establecería la propiedad user.agent. ej .:

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

Ahora, cuando se hace el desarrollo, se utiliza el archivo gwt.xml desarrollo, y cuando se hace una compilación de producción. usaría el archivo de producción gwt.xml.


La forma más sencilla de lograr esto con Maven es activar el módulo de desarrollo utilizando un perfil. He escrito en detalle sobre esto en Maven Recipe : GWT development profile.

+0

Gracias por la respuesta. Lo probé (usando GWT 1.5) y la compilación funciona como se esperaba. El único obstáculo es que mi Application.html todavía se refiere a Application.nocache.js, en lugar de ApplicationFirefox.nocache.js. Referencia: http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=FAQ_CompileOnePermutation –

+0

¿Se utiliza el gwt.xml para la construcción de firefox comienza con ? – Chi

+0

está en lo cierto, esto le faltaba 'rename-to'.Actualizaré la respuesta con la configuración maven que he usado también. –

2

Crea un módulo MavenFilteredUserAgent que establece user.agent desde varios perfiles en el 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> 
... 

tiene todos sus módulos heredan el módulo MavenFilteredUserAgent.

Luego puede compilar solo para Firefox.

mvn install -Pgwt-firefox

http://9mmedia.com/blog/?p=854 tiene más detalles.

+1

Para [GWT 2.1.1] (http://groups.google.com/group/google-web-toolkit/browse_thread/thread/6f2418947d7efeb9/2a6615d8b719089), deseará eliminar gecko de la lista predeterminada. Básicamente, debe tener la misma lista que el [Módulo del agente de usuario] base (http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user). /UserAgent.gwt.xml) – Gabriel

+1

Siempre obtengo: [INFO] [ERROR] Valor de propiedad no válido '$ {gwt.compile.user.agent}' [INFO] [ERROR] Error al analizar XML – Alex