Проблема с компиляцией проекта gwt с помощью ant - PullRequest
5 голосов
/ 10 февраля 2010

Я использую GWT уже довольно давно и до сих пор использовал только плагин eclipse для компиляции своих проектов.В связи с новым требованием мне нужно использовать сборку ant (впервые) для сборки проекта gwt.Сначала я скажу, что у меня есть 2 модуля, которые имеют точку входа и 2 других общих модуля, которые содержат только классы Java (которые должны быть переведены в js), и они находятся в другом проекте в моей рабочей области.

В настоящее время у меня есть проект GWT, который требует общего проекта, который, в свою очередь, требует проекта DAL (когда я говорю «требуют», я имею в виду, что он так определен в пути сборки проекта eclipse).В моем проекте GWT в соответствующем месте находятся файлы Common.gwt.xml и DAL.gwt.xml, которые определяют их как модули, а мой ModuleEntryPoint.gwt.xml наследует эти два модуля (в дополнение к другим модулям).Когда я сейчас использую плагин gwt eclipse для компиляции, все работает хорошо.

Однако, когда я попытался смоделировать это с помощью сборки ant, компиляция моего ModuleEntryPoint не удалась, поскольку компилятор сказал, что не может найти источники для классов, принадлежащих модулю DAL или модулю Common.код сборки очень прост, так как это моя первая попытка.
Заранее благодарим за любую предоставленную помощь.

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

Ответы [ 2 ]

4 голосов
/ 11 февраля 2010

В задаче compile-gwt я не дал ему пути к источникам общих модулей (../Common/src и т. Д.), Поэтому я добавил его, и он работает. Что-то вроде:

<classpath>
    <pathelement location="src"/>
    <pathelement location="../Common/src"/>
    <path refid="gwt.compile.classpath"/>
  </classpath>
0 голосов
/ 10 февраля 2010

сделать что-то похожее

<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} - это место, где находятся файлы JAR инструментария GWT
  • $ {gwtCompiler} - это используемый компилятор (Linux / Windows)

ПРИМЕЧАНИЕ : вам необходимо удалить javax из gwt-user.jar для развертывания. Насколько я знаю, это все еще открытый вопрос 1017 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...