Что задача Gradle "build" включает в себя

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

  • Это происходит из плагина java-base, верно?
  • Выполнение gradle -q tasks не говорит об этом много.

build - Сборка и тестирование этого проекта.

  • Выполнение gradle help --task build показывает подробную информацию, ok - но показывает, где используется задача, в которой включены группы, тип задачи и пути.

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

Я хотел бы знать, что именно происходит из задачи сборки Gradle, каковы зависимости задачи.

Ответ 1

Из документов плагина Gradle Java

build dependencies

Это зависимости - это задача проверки и сборки, которую вы можете видеть, иметь свои собственные зависимости

Ответ 2

Вы можете использовать плагин дерева задач Gradle, чтобы увидеть зависимости задач

например:

plugins {
    id "com.dorongold.task-tree" version "1.3.1"
}

Тогда беги

gradle build taskTree

Выход

:build
+--- :assemble
|    \--- :jar
|         \--- :classes
|              +--- :compileJava
|              \--- :processResources
\--- :check
     \--- :test
          +--- :classes
          |    +--- :compileJava
          |    \--- :processResources
          \--- :testClasses
               +--- :compileTestJava
               |    \--- :classes
               |         +--- :compileJava
               |         \--- :processResources
               \--- :processTestResources

Ответ 3

Начиная с версии 4.0 вы должны запустить gradle build --console=plain, чтобы увидеть полный список зависимостей задач.

Если вы используете плагин java-base, то зависимости:

$ gradle build --console=plain
:assemble
:check
:build

enter image description here

Если вы используете java (который автоматически применяет java-base), то зависимости:

$ gradle build --console=plain
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build

enter image description here

Чтобы увидеть точную цепочку зависимостей, показанную на картинках выше, я использовал небольшой помощник Perl, который можно запустить внутри проекта Gradle. Создает строку с точкой, описывающую график зависимости:

#/bin/perl
use strict;

my @deps;
my %tasks;

getDeps($ARGV[0]);
printDot();

sub getDeps {
    my $task = shift;
    $tasks{$task} = "";
    chomp(my @subtasks = 'gradle $task');
    @subtasks = grep { $_ =~ "^:" } @subtasks;
    pop @subtasks;
    foreach(@subtasks) {
        my ($s) = $_ =~ "^:(.*) ";
        push @deps, "$task -> $s;";
        if(!defined $tasks{$s}) {getDeps($s)}
    }
}

sub printDot {
    my $dot = "digraph main {\n";
    if(@deps>1) {
        foreach(@deps) {$dot .= "$_\n"}
    } else {
        $dot .= "$ARGV[0];\n";
    }
    print $dot . "}";
}

Затем выполните следующую команду, чтобы преобразовать вывод в изображение PNG:

$ t=build; perl dependencies.pl $t | tred | dot -T png > $t.png

или текст ASCII:

$ t=build; perl dependencies.pl $t | tred | graph-easy > $t.txt