我搜索了Gradle文档以及stackoverflow和其他一些地方,但我无法深入查找有关此任务中捆绑内容的信息,或者我错过了它,如果是这样,请指出我的方向。
java-base
插件,对吧?gradle -q tasks
并没有太多说明。build - 组装并测试这个项目。
正在运行gradle help --task build
会显示详细信息,但是它会显示使用任务的位置,包含的组,任务类型和路径。
我试图手动跟踪它附带的内容,注意,编译,测试等任务。
我想知道Gradle构建任务究竟是什么,任务依赖性是什么。
答案 0 :(得分:9)
答案 1 :(得分:8)
您可以使用Gradle Task Tree Plugin查看任务依赖关系
例如:
plugins {
id "com.dorongold.task-tree" version "1.3"
}
然后运行
gradle build taskTree
输出
:build
+--- :assemble
| \--- :jar
| \--- :classes
| +--- :compileJava
| \--- :processResources
\--- :check
\--- :test
+--- :classes
| +--- :compileJava
| \--- :processResources
\--- :testClasses
+--- :compileTestJava
| \--- :classes
| +--- :compileJava
| \--- :processResources
\--- :processTestResources
答案 2 :(得分:3)
从version 4.0开始,您必须运行gradle build --console=plain
才能查看完整的任务依赖列表。
如果您使用java-base
插件,则依赖项为:
$ gradle build --console=plain
:assemble
:check
:build
如果您使用java
(automatically applies java-base
),则依赖项为:
$ gradle build --console=plain
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
为了看到上面图片中显示的确切依赖关系链,我使用了一个可以在Gradle项目中运行的Perl帮助器。它生成一个描述依赖图的dot字符串:
#/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