2017-06-02 99 views
3

我已經搜索了Gradle文檔以及stackoverflow和其他一些地方,但是我找不到關於此任務中捆綁內容的信息,或者我錯過了,如果是的話請指點我的方向。Gradle'build'任務包括什麼

  • 它來自java-base插件,對不對?
  • 跑步gradle -q tasks並沒有多說這件事。

構建 - 組裝和測試此項目。

  • 運行gradle help --task build顯示詳細的信息,確定 - 但它顯示在任務中使用,其中包括組,類型任務和路徑。

  • 我試着手動跟蹤它帶來了什麼,並注意到,編譯,測試等任務。

我想知道Gradle構建任務到底是什麼,什麼是任務依賴關係。

回答

5

從搖籃的Java插件docs

build dependencies

它的依賴是檢查&組裝任務,你可以看到有自己的依賴

5

您可以使用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

version 4.0開始,你必須運行gradle build --console=plain看到任務相關的完整列表。

如果使用java-base插件則依賴關係是:

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

enter image description here

如果使用java(其中automatically appliesjava-base),則依賴關係是:

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

enter image description here

爲了看到上面圖片中顯示的確切的依賴關係鏈,我使用了一個可以在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 
+0

感謝詳細的答覆 – LazerBanana