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

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

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

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

Example- Всего четыре задачи - задача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, чтобы выбрать конкретный файл сборки вместе с абсолютным путем. В следующем примере выбирается привет из проекта.myproject.gradle файл, который находится в subdir/ взгляните на это.

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'.

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

Sr. No. Команда Описание
1 gradle –q help –task <название задачи> Предоставляет информацию об использовании (например, путь, тип, описание, группу) о конкретной задаче или нескольких задачах.
2 gradle –q зависимости Предоставляет список зависимостей выбранного проекта.
3 gradle -q api: dependencies --configuration <имя задачи> Предоставляет список ограниченных зависимостей, соответствующих конфигурации.
4 gradle –q buildEnvironment Предоставляет список зависимостей сценария сборки.
5 gradle –q dependencyInsight Предоставляет представление о конкретной зависимости.
6 Свойства Gradle –q Предоставляет список свойств выбранного проекта.