Gradle - Esecuzione di una build

Gradle fornisce una riga di comando per eseguire lo script di compilazione. Può eseguire più di un'attività alla volta. Questo capitolo spiega come eseguire più attività utilizzando diverse opzioni.

Esecuzione di più attività

È possibile eseguire più attività da un singolo file di build. Gradle può gestire quel file di build usandogradle command. Questo comando compilerà ogni attività nell'ordine in cui è elencata ed eseguirà ciascuna attività insieme alle dipendenze utilizzando diverse opzioni.

Example- Sono disponibili quattro attività: task1, task2, task3 e task4. L'attività3 e l'attività4 dipendono dall'attività 1 e dall'attività2. Dai un'occhiata al diagramma seguente.

Nelle precedenti 4 attività dipendono l'una dall'altra rappresentate con un simbolo di freccia. Dai un'occhiata al seguente codice. Copia può incollarlo inbuild.gradle file.

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

È possibile utilizzare il codice seguente per compilare ed eseguire l'attività precedente.

C:\> gradle task4 test

Produzione:

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

BUILD SUCCESSFUL

Total time: 1 secs

Escludere attività

Pur escludendo un'attività dall'esecuzione, è possibile utilizzare l'opzione –x insieme al comando gradle e menzionare il nome dell'attività che si desidera escludere.

Utilizzare il seguente comando per escludere task4 dallo script precedente.

C:\> gradle task4 -x test

Produzione:

:task1
compiling source
:task4
building the distribution

BUILD SUCCESSFUL

Total time: 1 secs

Continuare la compilazione quando si verifica un errore

Gradle interromperà l'esecuzione e fallirà la compilazione non appena un'attività fallisce. È possibile continuare l'esecuzione anche quando si verifica un errore. Per questo devi usare l'opzione –continue con il comando gradle. Gestisce ogni attività separatamente insieme alle loro dipendenze. E il punto importante è che rileverà ogni errore riscontrato e segnalerà alla fine dell'esecuzione della build. Supponiamo che se un'attività fallisce, anche le attività successive dipendenti non verranno eseguite.

Selezione della build da eseguire

Quando esegui il comando gradle, cerca un file di build nella directory corrente. È possibile utilizzare l'opzione –b per selezionare un particolare file di build insieme al percorso assoluto. Il seguente esempio seleziona un progetto hello damyproject.gradle file che si trova nel file subdir/ dai un'occhiata.

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

È possibile utilizzare il seguente comando per eseguire lo script precedente.

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

Produzione:

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

Ottenere informazioni sulla build

Gradle fornisce diverse attività integrate per recuperare i dettagli delle informazioni relative all'attività e al progetto. Questo può essere utile per comprendere la struttura e le dipendenze della build e per i problemi di debug. È possibile utilizzare il plug-in del report di progetto per aggiungere attività al progetto, che genererà questi report.

Progetti di quotazione

È possibile elencare la gerarchia del progetto selezionato e i relativi sottoprogetti utilizzando gradle –q projectscomando. Ecco l'esempio, usa il seguente comando per elencare tutti i progetti nel file di build.

C:\> gradle -q projects

Produzione:

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

Il report mostra la descrizione di ogni progetto, se specificato. È possibile utilizzare il seguente comando per specificare la descrizione. Incollalo nel filebuild.gradle file.

description = 'The shared API for the application'

Attività di quotazione

È possibile elencare tutte le attività che appartengono a più progetti utilizzando il comando seguente.

C:\> gradle -q tasks

Produzione:

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

È possibile utilizzare il seguente comando per visualizzare le informazioni di tutte le attività.

C:\> gradle -q tasks --all

Produzione:

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

Di seguito sono riportati alcuni elenchi di comandi in una tabella che descrive diverse opzioni.

Sr. No. Comando Descrizione
1 gradle –q help –task <nome attività> Fornisce le informazioni sull'utilizzo (come percorso, tipo, descrizione, gruppo) su un'attività specifica o su più attività.
2 gradle –q dipendenze Fornisce un elenco di dipendenze del progetto selezionato.
3 gradle -q api: dependencies --configuration <nome attività> Fornisce l'elenco delle dipendenze limitate relative alla configurazione.
4 gradle –q buildEnvironment Fornisce l'elenco delle dipendenze degli script di compilazione.
5 gradle –q dependencyInsight Fornisce una panoramica di una particolare dipendenza.
6 Proprietà Gradle –q Fornisce l'elenco delle proprietà del progetto selezionato.