Was ich feststeckte oder nicht finden konnte, als ich build.gradle nachgeschlagen habe
--Gradle6.4 (veröffentlicht am 06.05.2020)
Vorerst kann es sinnvoll sein, einen Blick auf [Gradles Dokumentation] zu werfen (https://docs.gradle.org/6.4/userguide/userguide.html).
Namenslink zur Dokumentation
So etwas wie ". / Gradlew" oder ". / Gradlew.bat". Kann durch Ausführen der Wrapper-Task initialisiert und aktualisiert werden Damit ist es in Ordnung, wenn die in der Entwicklerumgebung installierte Version von gradle anders ist!
Offizielle Dokumentation: The Gradle Wrapper
Wenn nicht angegeben, kann sich das Build-Ergebnis zwischen Linux und Windows ändern.
Wenn Sie beispielsweise UTF-8 angeben, sieht es so aus
build.gradle
//Kompilieren Sie die Java-Task-Codierung
compileJava.options.encoding = 'UTF-8'
//compileTest Java-Taskcodierung
compileTestJava.options.encoding = 'UTF-8'
//Javadoc-Task-Codierung
javadoc.options.encoding = 'UTF-8'
** Verwenden Sie nicht compile
oder testCompile
, da diese veraltet sind **
Es gibt verschiedene Dinge wie "Implementierung" und "Testimplementierung", aber da es problematisch ist, das offizielle Dokument
The Java Plugin
Was ist "api"?
Es ist in The Java Library Plugin geschrieben.
Eine kurze Erklärung
compileOnly
ist eine Abhängigkeit, die zur Kompilierungszeit erforderlich ist. Nicht in FatJar usw. enthalten (in Maven vorgesehener Umfang)
runtimeOnly
ist eine zur Laufzeit erforderliche Abhängigkeit. Es kann in FatJar usw. eingegeben werden, kann aber nicht aus dem Quellcode heraus referenziert werden (ich denke es ist, aber ich weiß es nicht, weil ich es nie benutzt habe).
Implementierung
ist eine erforderliche Abhängigkeit sowohl zur Kompilierung als auch zur Laufzeit. Es kann aus FatJar und aus dem Quellcode heraus referenziert werden, aber es kann nicht aus Projekten referenziert werden, die dies als Abhängigkeit haben (in Maven als "bereitgestellt" erkannt).
Verwenden Sie das Java Library Plugin api
, um es sichtbar zu machen
Auch diejenigen mit "test" am Anfang (z. B. "testImplementation") sind nur während des Tests gültig.
Die offizielle Dokumentation finden Sie hier: Deklarieren von Versionen und Bereichen
build.gradle
testImplementation 'org.junit.jupiter:junit-jupiter:5.6.+'
Wenn Sie dies tun, wird in 5.6. Unten die aktuellste Version zu diesem Zeitpunkt verwendet. Das Erstellungsergebnis kann sich je nach der aufgrund dieses Effekts erstellten Umgebung ändern. Wenn Sie dies verhindern möchten, wählen Sie Abhängigkeiten korrigieren.
Die offizielle Dokumentation finden Sie hier: Sperren von Abhängigkeitsversionen
Zu Plugins hinzufügen
build.gradle
id 'net.ltgt.errorprone' version '1.1.1'
Zur Abhängigkeit hinzufügen
build.gradle
dependencies {
// ErrorProne
errorprone 'com.google.errorprone:error_prone_core:2.+'
}
Fügen Sie für Java8 den Java9-Compiler ein
build.gradle
dependencies {
errorproneJavac 'com.google.errorprone:javac:9+181-r4173-1'
}
Wenn Sie in einer Java 8-Umgebung oder Java 9 oder höher ausgeführt werden möchten, ist dies möglicherweise hilfreich
build.gradle
if (!JavaVersion.current().isJava9Compatible()) {
dependencies {
errorproneJavac 'com.google.errorprone:javac:9+181-r4173-1'
}
}
Es scheint, dass Javac ersetzt wird, so dass es auf alle Kompilierungsaufgaben angewendet wird
Zu Plugins hinzufügen
build.gradle
plugins {
id 'checkstyle'
}
Optimieren Sie config / checkstyle / checkstyle.xml. Zum Beispiel
checkstyle.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="FileTabCharacter"/>
<module name="TreeWalker">
<module name="Indentation">
<property name="lineWrappingIndentation" value="8"/>
</module>
<!-- Imports -->
<module name="UnusedImports"/>
<module name="RedundantImport"/>
<module name="ImportOrder">
<property name="separated" value="true"/>
<property name="sortStaticImportsAlphabetically" value="true"/>
</module>
<!-- Brackets -->
<module name="LeftCurly"/>
<module name="RightCurly"/>
<module name="NeedBraces"/>
</module>
</module>
Offizielle Dokumentation sieht gut aus
Wenn Sie die Build-Task ausführen, wird sie ohne Berechtigung ausgeführt
Zur Abhängigkeit hinzufügen
build.gradle
testImplementation 'org.junit.jupiter:junit-jupiter:5.6.+'
Es wird schön sein, es so einzustellen
build.gradle
tasks.test {
testLogging.showStandardStreams = true // System.Anzeige oder Fehler im Protokoll
useJUnitPlatform()
testLogging {
events('passed', 'skipped', 'failed')
}
}
Als Plug-In hinzufügen
build.gradle
plugins {
id 'com.github.johnrengelman.shadow' version '5.2.0'
}
Führen Sie die Aufgabe "shadowjar" aus und sie wird unter build / libs abgeschlossen
Sie können das Glas verschieben, minimieren und umbenennen, aber es ist ein Ärger, so die offizielle Dokumentation https://imperceptiblethoughts.com/shadow/introduction/
build.gradle
javadoc {
if(JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}
Dadurch sieht die Javadoc-Aufgabe gut aus (erfordert Java 9 oder höher).
Recommended Posts