使用ant编译gwt项目的问题

问题描述 投票:0回答:2

我已经使用 GWT 有一段时间了,到目前为止只使用 eclipse 插件来编译我的项目。由于新的要求,我需要使用 ant 构建(第一次)来构建 gwt 项目。首先,我要说的是,我有 2 个具有入口点的模块和另外 2 个仅包含 java 类(应翻译为 js)的通用模块,它们位于我工作区中的不同项目中。

目前我有 GWT 项目,它需要 Common 项目,而 Common 项目又需要 DAL 项目(当我说需要时,我的意思是它是在 eclipse 项目构建路径中定义的)。在我的 GWT 项目中,我在适当的位置有一个 Common.gwt.xml 和 DAL.gwt.xml 文件,它们将它们定义为模块,并且我的 ModuleEntryPoint.gwt.xml 继承了这两个模块(以及其他模块)。当我当前使用 gwt eclipse 插件编译时,一切正常。

但是,当我尝试使用 ant 构建来模拟这一点时,我的 ModuleEntryPoint 编译失败,因为编译器表示无法找到属于 DAL 模块或 Common 模块的类的源。

ant 构建代码非常基础,因为这是我的第一次尝试。
预先感谢您提供的任何帮助。

    <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>
gwt ant
2个回答
4
投票

compile-gwt
任务中,我没有给他公共模块源的路径(../Common/src 等),所以我添加了它并且它可以工作。 比如:

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

0
投票

做类似的事情

<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} - 是 GWT 工具包 JAR 所在的位置
  • ${gwtCompiler} - 是使用的编译器(Linux / Windows)

注意:您需要从 gwt-user.jar 中删除 javax 才能进行部署。 据我所知,这仍然是一个开放的问题

© www.soinside.com 2019 - 2024. All rights reserved.