I've been using GWT for quite some time now and have only used the eclipse plugin to compile my projects so far. Due to a new requirement I need to use an ant build (for the first time) to build a gwt project. First I'll say that I have 2 modules which have an entry point and 2 other common modules which only contain java classes (which should be translated to js) and they sit in a different project in my workspace.
Currently I have the GWT project which requires the Common project which in turn requires the DAL project (when I say require I mean that it is so defined in the eclipse project build path). In my GWT project I have, in an appropriate location, a Common.gwt.xml and DAL.gwt.xml files which define those as modules and my ModuleEntryPoint.gwt.xml inherits those two modules (in addition to other modules). When I currently use the gwt eclipse plugin to compile everything works well.
However when I tried to simulate this with the ant build the compilation of my ModuleEntryPoint fails as the compiler says it cannot find sources for classes which belong to DAL module or Common module.
The ant build code is very basic as this is my first attemp.
Thanks in advance for any help granted.
<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>
In the compile-gwt
task I didn't give him the path to the sources of the common modules (../Common/src etc) so I've added it and it works.
Something like:
<classpath>
<pathelement location="src"/>
<pathelement location="../Common/src"/>
<path refid="gwt.compile.classpath"/>
</classpath>