2010-02-10 9 views
5

He estado usando GWT durante bastante tiempo y solo he usado el plugin de eclipse para compilar mis proyectos hasta el momento. Debido a un nuevo requisito, necesito usar una construcción ant (por primera vez) para construir un proyecto gwt. Primero diré que tengo 2 módulos que tienen un punto de entrada y otros 2 módulos comunes que solo contienen clases de Java (que deben traducirse a js) y se sientan en un proyecto diferente en mi espacio de trabajo.Problema con la compilación de un proyecto de gwt con ant

Actualmente tengo el proyecto GWT que requiere el proyecto Común, que a su vez requiere el proyecto DAL (cuando digo que requiero quiero decir que está así definido en la ruta de compilación del proyecto Eclipse). En mi proyecto de GWT tengo, en una ubicación adecuada, archivos Common.gwt.xml y DAL.gwt.xml que los definen como módulos y ModuleEntryPoint.gwt.xml hereda esos dos módulos (además de otros módulos). Cuando uso el plugin gwt eclipse para compilar todo, todo funciona bien.

Sin embargo, cuando traté de simular esto con la compilación Ant, la compilación de mi ModuleEntryPoint falla ya que el compilador dice que no puede encontrar fuentes para las clases que pertenecen al módulo DAL o al módulo Común.

El código de compilación de ant es muy básico, ya que este es mi primer intento.
Gracias de antemano por cualquier ayuda otorgada.

<path id="compile.classpath"> 
    <fileset dir="${build.dir.WEB-INF.lib}"> 
       <include name="**/*.jar" /> 
       <include name="**/*.xml" /> 
    </fileset> 
    <fileset dir="${ExternalLib.WebServer.dir}"> 
      <include name="**/*.jar" /> 
      <include name="**/*.xml" /> 
    </fileset> 

    <fileset dir="${GWT.dir}"> 
      <include name="**/*.jar" /> 
      <include name="**/*.dll" /> 
    </fileset> 

</path> 

<target name="clear_previous_war"> 
<delete dir="${build.dir}" /> 
<mkdir dir="${build.dir.WEB-INF.classes}"/> 
<mkdir dir="${build.dir.WEB-INF.lib}"/> 

<target name="build_common" > 
    <jar destfile="${build.dir.WEB-INF.lib}/${jar.common}" 
     basedir="${common.dir.build}" 
     includes="com/**" 
     excludes="**/.svn" 
     />  
</target> 

<target name="build_dal" > 
    <jar destfile="${build.dir.WEB-INF.lib}/${jar.dal}" 
     basedir="${dal.dir.build}" 
     includes="com/**" 
     excludes="**/.svn" 
     />  
</target> 

<target name="copy_additional_files" > 
    ... Copies all required external jars to web-inf/lib 
</target> 

<target name="compile_web_classes" > 
    <javac srcdir="src" classpathref="compile.classpath" 
    destdir="${build.dir.WEB-INF.classes}" 
      source="1.6"/> 
</target> 

<target name="compile_gwt_button" description="GWT compile to JavaScript"> 
       <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> 
         <classpath> 
           <pathelement location="${src.dir}" /> 
           <path refid="compile.classpath" />     
         </classpath> 
         <jvmarg value="-Xmx256M" /> 
         <arg value="com.myCompany.web.Button" /> 
       </java> 
</target> 

<target name="deploy" description="Build web project"> 
    <antcall target="clear_previous_war" /> 
    <antcall target="build_common" /> 
    <antcall target="build_dal" /> 
    <antcall target="copy_additional_files" /> 
    <antcall target="compile_web_classes" /> 
    <antcall target="compile_gwt_button" /> 
</target> 

Respuesta

4

En la tarea compile-gwt que no le daba el camino a las fuentes de los módulos comunes (../Common/src etc) por lo que he añadido y funciona. Algo como:

<classpath> 
    <pathelement location="src"/> 
    <pathelement location="../Common/src"/> 
    <path refid="gwt.compile.classpath"/> 
    </classpath> 
0

hacer algo similar

<condition property="gwtCompiler" value="gwt-dev-linux.jar"> 
    <os family="unix" /> 
</condition> 
<condition property="gwtCompiler" value="gwt-dev-windows.jar"> 
    <not> 
     <os family="unix" /> 
    </not> 
</condition> 

<echo>${gwtCompiler}</echo> 

<path id="gwt.compile.classpath"> 
     <pathelement path="${java.class.path}/" /> 
     <pathelement location="${gwt.sdk.location}/gwt-user.jar" /> 
.. add here your dependencies 
    <pathelement location="${gwt.sdk.location}/${gwtCompiler}" /> 
     <pathelement location="${gui.source}" /> 
</path> 

<target name="compile-gwt" depends="compile-gui" description="GWT compile to JavaScript"> 
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> 
     <classpath> 
     <pathelement location="src"/> 
     <path refid="gwt.compile.classpath"/> 
     </classpath> 
     <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError --> 
     <jvmarg value="-Xmx256M"/> 
     <!-- Additional arguments like -style PRETTY or -logLevel DEBUG --> 
     <arg value="${gwt.entrypoint.class}" /> 
    </java> 
    </target> 

donde

  • {gwt.sdk.location} - es la posición donde se encuentran los archivos JAR del kit de herramientas de GWT
  • $ {} - gwtCompiler es el compilador utilizado (Linux/Windows)

NOTA: hay que quitar el javax de GWT-user.jar, para la implementación. Por lo que yo sé que esto es un proceso abierto Stil issue

+0

Muchas gracias pero creo que he descubierto el problema. En la tarea 'compile-gwt' no le di el camino a las fuentes de los módulos comunes (../Common/src etc) así que lo he agregado y funciona. Gracias. – Ittai

Cuestiones relacionadas