Учебники

Gradle — Запуск сборки

Gradle предоставляет командную строку для выполнения сценария сборки. Он может выполнять более одной задачи одновременно. В этой главе объясняется, как выполнять несколько задач с использованием разных параметров.

Выполнение нескольких задач

Вы можете выполнить несколько задач из одного файла сборки. Gradle может обработать этот файл сборки с помощью команды gradle . Эта команда скомпилирует каждую задачу в порядке их перечисления и выполнит каждую задачу вместе с зависимостями, используя различные параметры.

Пример — есть четыре задачи — задача1, задача2, задача3 и задача4. Задача 3 и задача 4 зависят от задачи 1 и задачи 2. Посмотрите на следующую диаграмму.

Выполнение нескольких задач

В приведенном выше 4 задачи зависят друг от друга и представлены символом стрелки. Посмотрите на следующий код. Копировать можно вставить в файл build.gradle .

task task1 << {
   println 'compiling source'
}

task task2(dependsOn: task1) << {
   println 'compiling unit tests'
}

task task3(dependsOn: [task1, task2]) << {
   println 'running unit tests'
}

task task4(dependsOn: [task1, task3]) << {
   println 'building the distribution'
}

Вы можете использовать следующий код для компиляции и выполнения вышеуказанной задачи.

C:\> gradle task4 test

Выход:

:task1
compiling source
:task2
compiling unit tests
:task3
running unit tests
:task4
building the distribution

BUILD SUCCESSFUL

Total time: 1 secs

Исключая задачи

При исключении задачи из выполнения вы можете использовать опцию –x вместе с командой gradle и указать имя задачи, которое вы хотите исключить.

Используйте следующую команду, чтобы исключить task4 из приведенного выше сценария.

C:\> gradle task4 -x test

Выход:

:task1
compiling source
:task4
building the distribution

BUILD SUCCESSFUL

Total time: 1 secs

Продолжение сборки, когда происходит сбой

Gradle прервет выполнение и завершит сборку сразу после сбоя любой задачи. Вы можете продолжить выполнение даже в случае сбоя. Для этого вы должны использовать опцию –continue с командой gradle. Он обрабатывает каждую задачу отдельно вместе с их зависимостями. И главное — он будет отлавливать каждую обнаруженную ошибку и сообщать об окончании сборки. Предположим, что если задача не выполнена, то последующие зависимые задачи также не будут выполнены.

Выбор сборки для выполнения

Когда вы запускаете команду gradle, она ищет файл сборки в текущем каталоге. Вы можете использовать опцию –b, чтобы выбрать конкретный файл сборки вместе с абсолютным путем. В следующем примере выбирается проект hello из файла myproject.gradle, который находится в подкаталоге / посмотрите на него.

task hello << {
   println "using build file '$buildFile.name' in '$buildFile.parentFile.name'."
}

Вы можете использовать следующую команду для выполнения вышеуказанного скрипта.

C:\> gradle -q -b subdir/myproject.gradle hello

Выход:

using build file 'myproject.gradle' in 'subdir'.

Получение информации о сборке

Gradle предоставляет несколько встроенных задач для получения подробной информации о задаче и проекте. Это может быть полезно для понимания структуры и зависимостей вашей сборки и для устранения проблем. Вы можете использовать плагин отчетов проекта, чтобы добавить задачи в ваш проект, который будет генерировать эти отчеты.

Листинг проектов

Вы можете перечислить иерархию проектов выбранного проекта и его подпроектов с помощью команды gradle –q projects . Вот пример, используйте следующую команду, чтобы получить список всех проектов в файле сборки.

C:\> gradle -q projects

Выход:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

Отчет показывает описание каждого проекта, если он указан. Вы можете использовать следующую команду, чтобы указать описание. Вставьте его в файл build.gradle .

description = 'The shared API for the application'

Листинг Задачи

Вы можете перечислить все задачи, которые принадлежат нескольким проектам, используя следующую команду.

C:\> gradle -q tasks

Выход:

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Default tasks: dists

Build tasks
-----------
clean - Deletes the build directory (build)
dists - Builds the distribution
libs - Builds the JAR

Build Setup tasks
-----------------
init - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'projectReports'.
components - Displays the components produced by root project 'projectReports'. [incubating]
dependencies - Displays all dependencies declared in root project 'projectReports'.
dependencyInsight - Displays the insight into a specific dependency in root project 'projectReports'.
help - Displays a help message.
model - Displays the configuration model of root project 'projectReports'. [incubating]
projects - Displays the sub-projects of root project 'projectReports'.
properties - Displays the properties of root project 'projectReports'.
tasks - Displays the tasks runnable from root project 'projectReports' 
   (some of the displayed tasks may belong to subprojects).

To see all tasks and more detail, run gradle tasks --all

To see more detail about a task, run gradle help --task <task>

Вы можете использовать следующую команду для отображения информации обо всех задачах.

C:\> gradle -q tasks --all

Выход:

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Default tasks: dists

Build tasks
-----------
clean - Deletes the build directory (build)
api:clean - Deletes the build directory (build)
webapp:clean - Deletes the build directory (build)
dists - Builds the distribution [api:libs, webapp:libs]
   docs - Builds the documentation
api:libs - Builds the JAR
   api:compile - Compiles the source files
webapp:libs - Builds the JAR [api:libs]
   webapp:compile - Compiles the source files

Build Setup tasks
-----------------
init - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'projectReports'.
api:buildEnvironment - Displays all buildscript dependencies declared in project ':api'.
webapp:buildEnvironment - Displays all buildscript dependencies declared in project ':webapp'.
components - Displays the components produced by root project 'projectReports'. [incubating]
api:components - Displays the components produced by project ':api'. [incubating]
webapp:components - Displays the components produced by project ':webapp'. [incubating]
dependencies - Displays all dependencies declared in root project 'projectReports'.
api:dependencies - Displays all dependencies declared in project ':api'.
webapp:dependencies - Displays all dependencies declared in project ':webapp'.
dependencyInsight - Displays the insight into a specific dependency in root project 'projectReports'.
api:dependencyInsight - Displays the insight into a specific dependency in project ':api'.
webapp:dependencyInsight - Displays the insight into a specific dependency in project ':webapp'.
help - Displays a help message.
api:help - Displays a help message.
webapp:help - Displays a help message.
model - Displays the configuration model of root project 'projectReports'. [incubating]
api:model - Displays the configuration model of project ':api'. [incubating]
webapp:model - Displays the configuration model of project ':webapp'. [incubating]
projects - Displays the sub-projects of root project 'projectReports'.
api:projects - Displays the sub-projects of project ':api'.
webapp:projects - Displays the sub-projects of project ':webapp'.
properties - Displays the properties of root project 'projectReports'.
api:properties - Displays the properties of project ':api'.
webapp:properties - Displays the properties of project ':webapp'.
tasks - Displays the tasks runnable from root project 'projectReports' 
   (some of the displayed tasks may belong to subprojects).
api:tasks - Displays the tasks runnable from project ':api'.
webapp:tasks - Displays the tasks runnable from project ':webapp'.

Вот некоторые списки команд в таблице описания различных опций.