Статьи

Эволюция Gradle Build из Ant Build: импорт файла сборки Ant

Изменение системы сборки в большом проекте может быть сложным и трудоемким. К счастью для тех, кто переносит сборки Ant в сборки Gradle , Gradle предоставляет особенно удобные механизмы для облегчения этой миграции . Поскольку Gradle построен на Groovy, а Groovy включает встроенную поддержку Ant через AntBuilder, сборки Gradle могут использовать AntBuilder для вызова задач Ant и запуска целей Ant . Тем не менее, Gradle предоставляет еще более простой механизм для ссылки на существующие цели Ant из сборки Gradle с поддержкой Gradle для импорта сборки Ant через DefaultAntBuilder, и это тема этого поста.

Возможность вызывать существующие цели Ant из новой сборки Gradle является преимуществом, поскольку позволяет выполнять миграцию с течением времени. Можно начать использовать Gradle практически сразу со всей реальной работой, делегированной существующей сборке Ant. Затем, если позволяют время и приоритеты, различные задачи Ant можно заменить задачами Gradle.

Чтобы продемонстрировать, как легко импортировать сборку Ant в сборке Gradle, я сначала приведу листинг кода для упрощенной сборки Ant.

Файл сборки Ant: build.xml

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?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, который это делает.

Gradle build.gradle который импортирует Ant build.xml

1
ant.importBuild 'build.xml'

Однострочный файл сборки Gradle, показанный выше, импортирует файл сборки Ant, показанный ранее. Эффекты этого можно легко увидеть на следующих снимках экрана. Начальный снимок экрана показывает, что однострочный файл сборки Gradle делает проект «массивы» доступным для сборки Gradle, а также «другие задачи» со значениями «all» и «clean» с описаниями, связанными с этими целями Ant.

gradleImportedAntProjectTasks

Можно использовать gradle tasks --all — все, чтобы увидеть все цели Ant, включая зависимые цели, такие как «compile», «jar» и «javadoc». Это продемонстрировано на следующем снимке экрана.

gradleImportedAntProjectAllTasks

На следующем снимке экрана показано выполнение цели по умолчанию «все» в сборке Ant из сборки Gradle.

gradleImportedAntProjectAllTargetsRun

Как показали списки сборок и изображения, импорт существующей сборки Ant в сборку Gradle является простым процессом.

Ссылка: Evolving Gradle Build от Ant Build: импорт файла Ant Build от нашего партнера JCG Дастина Маркса в блоге Inspired by Actual Events .