显式控制Ant跳过的任务以加速GWT编译

时间:2010-10-11 18:33:59

标签: java gwt ant

我正在使用Ant任务来调用Google的GWT编译器,如:

<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
 <arg value="package.of.GWTClass" />
</java>

这很有效,但是我希望避免在每个Ant构建期间重新编译整个项目,因为没有任何依赖项发生了变化。我知道Ant无法自动跟踪这些依赖关系,但有没有办法让我手动编码它们,并在没有任何变化时有选择地跳过目标?

3 个答案:

答案 0 :(得分:1)

您还可以考虑尝试使用Java编译来并行化ANT构建中的GWT编译步骤。我们使用ANT的标记来运行GWT编译步骤以及标准的Java编译步骤。显然,只有当您的计算机具有多个核心时,这才会真正有用。

e.g。

<parallel>
    <antcall target="gwt-compile"/>
    <sequential>
        <antcall target="compile/java"/>
    </sequential>
    <parallel>
        <antcall target="compile/test-unit"/>
        <antcall target="compile/test-integration"/>
        <antcall target="compile/test-gwt"/>
        <antcall target="compile/test-selenium"/>
    </parallel>
</parallel>

我们还定义了仅针对Firefox浏览器的模块文件,用于运行构建的测试部分(用于我们的check in buid),然后还有一个更完整的模块文件,支持所有浏览器以完全构建在持续集成上建立。

答案 1 :(得分:0)

您可以在蚂蚁目标中添加if子句。我们按如下方式使用它:

<target name="gwt-compile" if="gwt" description="Compile GWT related code.">
    <!-- ... -->
</target>

当您调用目标时,可以通过将gwt属性设置为-D来启用编译:

ant -Dgwt=yes gwt-compile

目标中if的反面是unless

希望有所帮助。

答案 2 :(得分:0)

uptodate task与gwt结合使用。它的作用是检查文件是否比另一个文件更新,并设置属性(如果是)。您将gwt源文件与* .js输出文件的日期进行比较,如果它更新,则进行编译。

你必须得到gwt编译器将使用的所有文件,如果你只有一个模块名称,这可能很难,并且不能轻易地计算出继承树,但一个简单但不总是最优的方法就是使用每个gwt java文件。然后,在gwt编译任务中,在编译之前检查属性。

相关问题