2010-02-10 5 views
5

J'utilise GWT depuis un certain temps maintenant et j'ai seulement utilisé le plugin eclipse pour compiler mes projets jusqu'ici. En raison d'une nouvelle exigence, j'ai besoin d'utiliser une construction ant (pour la première fois) pour construire un projet gwt. Je dirai d'abord que j'ai 2 modules qui ont un point d'entrée et 2 autres modules communs qui ne contiennent que des classes java (qui devraient être traduites en js) et qui se trouvent dans un projet différent dans mon espace de travail.Problème avec la compilation d'un projet gwt avec ant

Actuellement, j'ai le projet GWT qui nécessite le projet commun qui à son tour nécessite le projet DAL (quand je dis que je veux dire qu'il est défini dans le chemin de construction du projet eclipse). Dans mon projet GWT j'ai, dans un emplacement approprié, un common.gwt.xml et des fichiers DAL.gwt.xml qui les définissent comme des modules et mon ModuleEntryPoint.gwt.xml hérite de ces deux modules (en plus d'autres modules). Quand j'utilise actuellement le plugin gwt eclipse pour compiler tout fonctionne bien.

Cependant lorsque j'ai essayé de simuler ceci avec la construction ant la compilation de mon ModuleEntryPoint échoue comme le compilateur dit qu'il ne peut pas trouver des sources pour les classes qui appartiennent au module DAL ou au module commun.

Le code de construction ant est très basique car c'est ma première tentative.
Merci d'avance pour toute aide accordée.

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

Répondre

4

Dans la tâche compile-gwt je ne lui donne pas le chemin vers les sources des modules communs (../Common/src etc) donc je l'ai ajouté et il fonctionne. Quelque chose comme:

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

Faites quelque chose de similaire

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

  • {} gwt.sdk.location - est la position où les fichiers JAR boîte à outils GWT sont situés
  • $ {} - gwtCompiler est le compilateur utilisé (Linux/Windows)

NOTE: vous devez retirer le javax de GWT-user.jar, pour le déploiement. Pour autant que je sais que c'est un Stil ouvert issue

+0

Merci beaucoup, mais je pense que j'ai découvert le problème. Dans la tâche 'compile-gwt' je ne lui ai pas donné le chemin vers les sources des modules communs (../Common/src etc) donc je l'ai ajouté et ça marche. Merci. – Ittai