我正在使用Ant任务来调用Google的GWT编译器,如:
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<arg value="package.of.GWTClass" />
</java>
这很有效,但是我希望避免在每个Ant构建期间重新编译整个项目,因为没有任何依赖项发生了变化。我知道Ant无法自动跟踪这些依赖关系,但有没有办法让我手动编码它们,并在没有任何变化时有选择地跳过目标?
答案 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编译任务中,在编译之前检查属性。