在大型项目上更改构建系统可能很困难并且需要大量工作。 幸运的是,对于那些将Ant版本迁移到Gradle版本的人,Gradle提供了特别方便的机制来促进这种迁移 由于Gradle基于Groovy构建,并且Groovy通过AntBuilder包含内置的Ant支持,因此Gradle构建可以使用AntBuilder调用Ant任务并运行Ant目标 但是,Gradle提供了一种更轻松的机制来从Gradle构建中引用现有的Ant目标,同时Gradle支持通过DefaultAntBuilder 导入Ant构建 ,而这正是本文的主题。

能够从新的Gradle构建中调用现有的Ant目标是有利的,因为它允许随着时间的推移进行迁移。 几乎所有的实际工作都委托给现有的Ant构建,您几乎可以立即开始使用Gradle。 然后,在时间和优先级允许的情况下,可以将不同的Ant任务替换为Gradle任务。

为了演示在Gradle构建中导入Ant构建有多么容易,我首先提供简化的Ant构建的代码清单。

蚂蚁构建文件:

<?xml version="1.0" encoding="UTF-8"?>
<project name="JavaArrays" default="all" basedir=".">
   <description>Java Array Utility Functions</description>

   <property name="javac.debug" value="true" />
   <property name="src.dir" value="src" />
   <property name="dist.dir" value="dist" />
   <property name="classes.dir" value="classes" />
   <property name="javadoc.dir" value="${dist.dir}/javadoc" />

   <property name="jar.name" value="javaArrays.jar" />
   <property name="jar.filesonly" value="true" />

   <path id="classpath">
   </path>

   <target name="-init">
      <mkdir dir="${classes.dir}" />
      <mkdir dir="${dist.dir}" />
   </target>

   <target name="compile"
           description="Compile the Java code."
           depends="-init">
      <javac srcdir="${src.dir}"
             destdir="${classes.dir}"
             classpathref="classpath"
             debug="${javac.debug}"
             includeantruntime="false" />
   </target>

   <target name="jar"
           description="Package compiled classes into JAR file"
           depends="compile">
      <jar destfile="${dist.dir}/${jar.name}"
           basedir="${classes.dir}"
           filesonly="${jar.filesonly}">
      </jar>
   </target>

   <target name="all"
           description="Compile Java source, assemble JAR, and generate documentation"
           depends="jar, javadoc" />

   <target name="javadoc" description="Generate Javadoc-based documentation">
      <mkdir dir="${javadoc.dir}" />
      <javadoc doctitle="Examples of Java Array Utility Functions"
               destdir="${javadoc.dir}"
               sourcepath="${src.dir}"
               classpathref="classpath"
               private="true"
               author="Dustin" />
   </target>

   <target name="clean" description="Remove generated artifacts.">
      <delete dir="${classes.dir}" />
      <delete dir="${dist.dir}" />
   </target>

</project>

上面的Ant构建文件具有一些相当典型的目标,它们的名称如“ compile”,“ jar”,“ javadoc”和“ clean”。 所有这些功能都可以导入Gradle构建文件中。 下一个代码清单是完成此操作的完整Gradle构建文件。

导入Ant

ant.importBuild 'build.xml'

上面显示的单行Gradle构建文件将导入前面显示的Ant构建文件。 在以下屏幕快照中可以很容易地看出其效果。 初始屏幕快照显示,单行的Gradle构建文件使“ arrays”项目可用于Gradle构建以及“所有”和“清理”的“其他任务”以及与那些Ant目标相关的描述。

从Ant Build演进Gradle Build:导入Ant Build文件

可以使用gradle tasks --all全部查看所有Ant目标,包括诸如“编译”,“ jar”和“ javadoc”之类的依赖目标。 下一个屏幕快照对此进行了演示。

从Ant Build演进Gradle Build:导入Ant Build文件

下一个屏幕快照演示了如何从Gradle构建中运行默认的“全部”目标。

从Ant Build演进Gradle Build:导入Ant Build文件

正如构建清单和图像所示,将现有的Ant构建导入Gradle构建是一个简单的过程。

翻译自: https://www.javacodegeeks.com/2014/01/evolving-gradle-build-from-ant-build-importing-ant-build-file.html

相关文章: