Gradle-Aufgabe

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Verwenden Sie diese Aufgabe, um mithilfe eines Gradle-Wrapperskripts zu erstellen.

YAML-Codeausschnitt

# Gradle
# Build using a Gradle wrapper script
- task: Gradle@2
  inputs:
    #gradleWrapperFile: 'gradlew' 
    #cwd: # Optional
    #options: # Optional
    #tasks: 'build' # A list of tasks separated by spaces, such as 'build test'
    #publishJUnitResults: true 
    #testResultsFiles: '**/TEST-*.xml' # Required when publishJUnitResults == True
    #testRunTitle: # Optional
    #codeCoverageToolOption: 'None' # Optional. Options: none, cobertura, jaCoCo
    #codeCoverageClassFilesDirectories: 'build/classes/main/' # Required when codeCoverageToolOption == False
    #codeCoverageClassFilter: # Optional. Comma-separated list of filters to include or exclude classes from collecting code coverage. For example: +:com.*,+:org.*,-:my.app*.*
    #codeCoverageFailIfEmpty: false # Optional
    #javaHomeOption: 'JDKVersion' # Options: jDKVersion, path
    #jdkVersionOption: 'default' # Optional. Options: default, 1.11, 1.10, 1.9, 1.8, 1.7, 1.6
    #jdkDirectory: # Required when javaHomeOption == Path
    #jdkArchitectureOption: 'x64' # Optional. Options: x86, x64
    #gradleOptions: '-Xmx1024m' # Optional
    #sonarQubeRunAnalysis: false 
    #sqGradlePluginVersionChoice: 'specify' # Required when sonarQubeRunAnalysis == True# Options: specify, build
    #sonarQubeGradlePluginVersion: '2.6.1' # Required when sonarQubeRunAnalysis == True && SqGradlePluginVersionChoice == Specify
    #checkStyleRunAnalysis: false # Optional
    #findBugsRunAnalysis: false # Optional
    #pmdRunAnalysis: false # Optional

Argumente

Argument BESCHREIBUNG
wrapperScript
Gradle Wrapper

(Erforderlich) Der Speicherort im Repository des gradlew-Wrappers, der für den Build verwendet wird. Für Agents auf Windows (einschließlich von Microsoft gehostete Agents) müssen Sie den Wrapper gradlew.bat verwenden. Agents unter Linux oder macOS können das Shellskript gradlew verwenden.

Weitere Informationen finden Sie unter Gradle Wrapper.


Standardwert: gradlew
Argumentaliase: gradleWrapperFile
options
Optionen

(Optional) Geben Sie alle Befehlszeilenoptionen an, die Sie an den Gradle-Wrapper übergeben möchten.

Siehe Gradle-Befehlszeile.

tasks
Aufgaben

(Erforderlich) Die Aufgabe(n) für Gradle, die ausgeführt werden soll. Eine Liste von Aufgabennamen sollte durch Leerzeichen getrennt werden und kann gradlew tasks aus einer Eingabeaufforderung entfernt werden.

Weitere Informationen finden Sie unter Gradle Build Script Basics (Grundlagen zum Gradle-Buildskript).


Standardwert: build

Optionen für JUnit-Testergebnisse

Argument BESCHREIBUNG
publishJUnitResults
Veröffentlichen in Azure Pipelines
(Erforderlich) Wählen Sie diese Option aus, um die vom Gradle-Build erzeugten JUnit-Testergebnisse in Azure Pipelines/TFS zu veröffentlichen.
Standardwert: true
testResultsFiles
Testergebnisdateien
(Erforderlich) Testergebnisdateienpfad. Platzhalter können verwendet werden. Beispielsweise für alle XML-Dateien, */TEST-.xml deren Name mit TEST-beginnt."
Standardwert: **/TEST-*.xml
testRunTitle
Testlauftitel
(Optional) Weisen Sie einen Titel für die JUnit-Testfallergebnisse für diesen Build zu.

Code Coverage-Optionen

Argument BESCHREIBUNG
codeCoverageTool
Code Coverage-Tool
(Optional) Wählen Sie ein Code Coverage-Tool aus, um den Code zu bestimmen, der von den Testfällen für den Build abgedeckt wird.
Standardwert: Keiner
Argumentaliase: codeCoverageToolOption
classFilesDirectories
Klassendateienverzeichnisse
(Erforderlich) Durch Komma getrennte Liste von Verzeichnissen, die Klassendateien und Archivdateien (JAR, WAR usw.) enthalten. Code Coverage wird für Klassendateien in diesen Verzeichnissen gemeldet. Normalerweise werden Klassen unter "build/classes/main" durchsucht. Dies ist das Standardklassenverzeichnis für Gradle-Builds.
Standardwert: build/classes/main/
Argumentaliase: codeCoverageClassFilesDirectories
classFilter
Klasseneinschluss-/Ausschlussfilter
(Optional) Durch Komma getrennte Liste von Filtern, um Klassen ein- oder auszuschließen, die Code Coverage erfassen. Beispiel: +:com.*,+:org.*,-:my.app*.*."
Argumentaliase: codeCoverageClassFilter
failIfCoverageEmpty
Fehler, wenn Code Coverage-Ergebnisse fehlen
(Optional) Fehler beim Build, wenn die Code Coverage keine Ergebnisse für die Veröffentlichung erzeugt hat
Standardwert: False
Argumentaliase: codeCoverageFailIfEmpty

Erweiterte Optionen

Argument BESCHREIBUNG
cwd
Arbeitsverzeichnis
(Optional) Arbeitsverzeichnis, in dem der Gradle-Build ausgeführt werden soll. Wenn nichts angegeben ist, wird das Stammverzeichnis des Repositorys verwendet.
javaHomeSelection
Festlegen JAVA_HOME durch
(Erforderlich) Legt JAVA_HOME fest, indem entweder eine JDK-Version ausgewählt wird, die bei Builds gefunden wird, oder indem ein JDK-Pfad manuell eingegeben wird.
Standardwert: JDKVersion
Argumentaliase: javaHomeOption
jdkVersion
JDK-Version
(Optional) Versucht, den Pfad zur ausgewählten JDK-Version zu finden und JAVA_HOME festlegen.
Argumentaliase: jdkDirectory
jdkUserInputPath
JDK-Pfad
(Erforderlich) Legt JAVA_HOME auf den angegebenen Pfad fest.
Standardwert: Standard
Argumentaliase: jdkVersionOption
jdkArchitecture
JDK-Architektur
(Optional) Geben Sie optional die Architektur (x86, x64) des JDK an.
Standardwert: x64
Argumentaliase: jdkArchitectureOption
gradleOpts
Festlegen GRADLE_OPTS
(Optional) Legt die GRADLE_OPTS-Umgebungsvariable fest, die zum Senden von Befehlszeilenargumenten zum Starten der JVM verwendet wird. Das xmx-Flag gibt den maximalen Arbeitsspeicher an, der für die JVM verfügbar ist.
Standardwert: -Xmx1024m
Argumentaliase: gradleOptions

Codeanalyseoptionen

Argument BESCHREIBUNG
sqAnalysisEnabled
Ausführen der SonarQube- oder SonarCloud-Analyse
(Erforderlich) Diese Option wurde von Version 1 der Gradle-Aufgabe zur Verwendung der Marketplace-Erweiterungen SonarQube und SonarCloud geändert. Aktivieren Sie diese Option, um die SonarQube- oder SonarCloud-Analyse nach dem Ausführen von Aufgaben im Feld Aufgaben auszuführen. Außerdem müssen Sie der Buildpipeline vor dieser Gradle-Aufgabe eine Aufgabe zum Vorbereiten der Analysekonfiguration aus einer der Erweiterungen hinzufügen.
Standardwert: False
Argumentaliase: sonarQubeRunAnalysis
sqGradlePluginVersionChoice
SonarQube-Scanner für Gradle-Version
(Erforderlich) Die zu verwendende SonarQube Gradle-Plug-In-Version. Sie können sie in Ihrer Gradle-Konfigurationsdatei deklarieren oder hier eine Version angeben.
Standardwert: Angeben
sqGradlePluginVersion
SonarQube-Scanner für Gradle-Plug-In-Version
(Erforderlich) Alle verfügbaren Versionen finden Sie unter
Standardwert: 2.6.1
Argumentaliase: sonarQubeGradlePluginVersion
checkstyleAnalysisEnabled
Ausführen von Checkstyle
(Optional) Führen Sie das Checkstyle-Tool mit den standardmäßigen Sun-Überprüfungen aus. Ergebnisse werden als Buildartefakte hochgeladen.
Standardwert: False
Argumentaliase: checkStyleRunAnalysis
findbugsAnalysisEnabled
Ausführen von FindBugs
(Optional) Verwenden Sie das statische Analysetool FindBugs, um nach Fehlern im Code zu suchen. Ergebnisse werden als Buildartefakte hochgeladen. In Gradle 6.0 wurde dieses Plug-In entfernt. Verwenden Sie stattdessen das Spotbugs-Plug-In. Weitere Informationen:
Standardwert: False
Argumentaliase: findBugsRunAnalysis
pmdAnalysisEnabled
Ausführen von PMD
(Optional) Verwenden Sie das statische Analysetool PMD Java, um nach Fehlern im Code zu suchen. Ergebnisse werden als Buildartefakte hochgeladen.
Standardwert: False
Argumentaliase: pmdRunAnalysis
spotBugsAnalysisEnabled
Ausführen von Spotbugs
(Erforderlich) Aktivieren Sie diese Option, um spotBugs ausführen zu können. Dieses Plug-In funktioniert mit Gradle v5.6 oder höher. Ergebnisse werden als Buildartefakte hochgeladen. Weitere Informationen: Stellen Sie sicher, dass Sie Gradle 5.6 oder höher verwenden. Wenn Sie eine frühere Version von Gradle verwenden, funktioniert das Plug-In möglicherweise unerwartet oder gar nicht.
Standardwert: False
Argumentaliase: spotBugsAnalysis
spotBugsGradlePluginVersionChoice
Spotbugs-Plug-In für Gradle-Version
(Erforderlich) Die zu verwendende Spotbugs Gradle-Plug-In-Version. Sie können sie in Ihrer Gradle-Konfigurationsdatei deklarieren oder hier eine Version angeben.
Standardwert: Angeben
spotbugsGradlePluginVersion
Spotbugs für Gradle-Plug-In-Version
(Erforderlich) Alle verfügbaren Versionen finden Sie unter .
Standardwert: 4.7.0
Argumentaliase: spotbugsGradlePluginVersion

Optionen für die Aufgabensteuerung

Beispiel

Erstellen Ihrer Java-App mit Gradle

Quelle öffnen

Diese Aufgabe wird Open Source auf GitHub. Feedback und Beiträge sind willkommen.

Häufig gestellte Fragen

Gewusst wie einen Wrapper aus meinem Gradle-Projekt generieren?

Der Gradle-Wrapper ermöglicht dem Build-Agent das Herunterladen und Konfigurieren der genauen Gradle-Umgebung, die in das Repository eingecheckt wird, ohne dass eine Softwarekonfiguration auf dem Build-Agent selbst als der JVM vorhanden ist.

  1. Erstellen Sie den Gradle-Wrapper, indem Sie den folgenden Befehl aus dem Stammprojektverzeichnis ausstellen, in dem sich build.gradle befindet:

    jamal@fabrikam> gradle wrapper

  2. Hochladen Sie Ihren Gradle-Wrapper in Ihr Remoterepository.

    Es gibt ein binäres Artefakt, das vom Gradle-Wrapper generiert wird ( unter gradle/wrapper/gradle-wrapper.jar ). Diese Binärdatei ist klein und erfordert keine Aktualisierung. Wenn Sie die Gradle-Konfiguration ändern müssen, die auf dem Build-Agent ausgeführt wird, aktualisieren Sie gradle-wrapper.properties.

    Das Repository sollte in etwa wie die folgenden aussehen:

|-- gradle/
    `-- wrapper/
        `-- gradle-wrapper.jar
        `-- gradle-wrapper.properties
|-- src/
|-- .gitignore
|-- build.gradle
|-- gradlew
|-- gradlew.bat

Gewusst wie Timeouts beim Herunterladen von Abhängigkeiten beheben?

Um Fehler zu beheben, Read timed out z. B. beim Herunterladen von Abhängigkeiten, können Benutzer von Gradle 4.3+ das Timeout ändern, indem sie hinzufügen Options-Dhttp.socketTimeout=60000 -Dhttp.connectionTimeout=60000. Dadurch erhöht sich das Timeout von 10 Sekunden auf 1 Minute.

Benötige ich einen Agent?

Sie benötigen mindestens einen Agent, um den Build oder das Release auszuführen.

Ich habe Probleme. Wie kann ich diese beheben?

Weitere Informationen finden Sie unter Problembehandlung bei Build und Release.

Ich kann keinen standardmäßigen Agentpool auswählen und ich kann meine Builds oder Releases nicht in der Warteschlange positionieren. Wie kann ich dies korrigieren?

Weitere Informationen finden Sie unter Agentpools.

Die Nuget-Pushaufgabe scheitert mit folgendem Fehler: „Fehler: Das lokale Ausstellerzertifikat konnte nicht abgerufen werden.“ Wie kann ich dieses Problem beheben?

Dies kann durch das Hinzufügen eines vertrauenswürdigen Stammzertifikats behoben werden. Sie können entweder die NODE_EXTRA_CA_CERTS=file Umgebungsvariable ihrem Build-Agent hinzufügen oder die NODE.EXTRA.CA.CERTS=file Aufgabenvariable in Ihrer Pipeline. Weitere Informationen zu dieser Variablen finden Sie in der Dokumentation zu Node.js. Anweisungen zum Festlegen einer Variablen in Ihrer Pipeline finden Sie unter Festlegen von Variablen in einer Pipeline.

Ich verwende TFS lokal und einige dieser Features werden nicht angezeigt. Warum nicht?

Einige dieser Features sind nur auf Azure Pipelines und noch nicht lokal verfügbar. Einige Features sind lokal verfügbar, wenn Sie ein Upgrade auf die neueste Version von TFS vorgenommen haben.