2010-02-10 1 views
5

Ho usato GWT da un po 'di tempo e ho usato il plugin eclipse per compilare i miei progetti finora. A causa di un nuovo requisito, ho bisogno di usare una formica (per la prima volta) per costruire un progetto gwt. Per prima cosa dirò che ho 2 moduli che hanno un entry point e altri 2 moduli comuni che contengono solo classi java (che dovrebbero essere tradotte in js) e siedono in un progetto diverso nel mio spazio di lavoro.Problema con la compilazione di un progetto gwt con formica

Attualmente ho il progetto GWT che richiede il progetto Common che a sua volta richiede il progetto DAL (quando dico implichi che è così definito nel percorso di costruzione del progetto eclipse). Nel mio progetto GWT ho, in una posizione appropriata, un file Common.gwt.xml e DAL.gwt.xml che li definiscono come moduli e il mio ModuleEntryPoint.gwt.xml eredita questi due moduli (oltre ad altri moduli). Quando attualmente utilizzo il plugin gwt eclipse per compilare tutto funziona bene.

Tuttavia, quando ho provato a simulare questo con la build di form, la compilazione del mio ModuleEntryPoint fallisce mentre il compilatore dice che non riesce a trovare fonti per le classi che appartengono al modulo DAL o al modulo Comune.

Il codice ant form è molto semplice in quanto questo è il mio primo tentativo.
Grazie in anticipo per qualsiasi aiuto concesso.

<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> 

risposta

4

Nel compito compile-gwt io non gli ho dato il percorso per le fonti dei moduli comuni (../Common/src ecc) e quindi ho aggiunto che e funziona. Qualcosa del tipo:

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

fare qualcosa di simile

<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> 

dove

  • {gwt.sdk.location} - è la posizione in cui si trovano i
  • JAR toolkit GWT
  • $ {} gwtCompiler - è il compilatore utilizzato (Linux/Windows)

NOTA: è necessario rimuovere il javax da gwt-user.jar, per la distribuzione. Per quanto so che questo è stil un open issue

+0

Grazie mille ma penso di aver scoperto il problema. Nel task 'compile-gwt' non gli ho dato il percorso per le fonti dei moduli comuni (../Common/src etc) quindi l'ho aggiunto e funziona. Grazie. – Ittai