[JAVA] Hinweise zur Verwendung des Abhängigkeitsmanagement-Plugins

Was ist das Abhängigkeitsmanagement-Plugin?

Ein vom Spring Project entwickeltes Gradle-Plug-In. Damit kann Gradle denselben Mechanismus wie Mavens Stückliste verwenden.

Die Erklärung für die Stückliste lautet [Wenn Sie die Stückliste mit Gradle verwenden möchten, ist es anscheinend besser, das vom Spring-Team bereitgestellte Abhängigkeitsverwaltungs-Plugin zu verwenden - Machen Sie etwas](http://create-something.hatenadiary.jp/entry/2015/05/5 08/063000) usw.

Ursprünglich Teil des Spring Boot-Plug-Ins für Spring Boot 1.x, wurde es als separates Plug-In ausgegliedert, als Spring Boot 2.x wurde. + Es kann also unabhängig von Spring Boot verwendet werden (aber ich denke, es ist tatsächlich am hilfreichsten, wenn Spring Boot verwendet wird).

Umgebung

Gradle

5.4.1

Dependency Management Plugin

1.0.8.RELEASE

Hello World

build.gradle


plugins {
    id "java"
    id "io.spring.dependency-management" version "1.0.8.RELEASE"
}

repositories {
    mavenCentral()
}

dependencyManagement {
    dependencies {
        dependency "org.apache.commons:commons-lang3:3.9"
    }
}

dependencies {
    implementation "org.apache.commons:commons-lang3"
}

sourceCompatibility = 11
targetCompatibility = 11

compileJava.options.encoding = "UTF-8"

--plugins Informationen zum Schreiben ohne Verwendung von DSL finden Sie unter https://plugins.gradle.org/plugin/io.spring.dependency-management.

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.commons:commons-lang3 -> 3.9

Erläuterung

build.gradle


dependencyManagement {
    dependencies {
        dependency "org.apache.commons:commons-lang3:3.9"
    }
}

build.gradle


dependencies {
    implementation "org.apache.commons:commons-lang3"
}

Deklarieren Sie Versionen mehrerer Artefakte in derselben Gruppe gleichzeitig

build.gradle


...

dependencyManagement {
    dependencies {
        dependencySet(group: "org.apache.poi", version: "4.1.0") {
            entry "poi"
            entry "poi-ooxml"
        }
    }
}

dependencies {
    implementation "org.apache.poi:poi"
    implementation "org.apache.poi:poi-ooxml"
}

...

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.apache.poi:poi -> 4.1.0
|    +--- commons-codec:commons-codec:1.12
|    +--- org.apache.commons:commons-collections4:4.3
|    \--- org.apache.commons:commons-math3:3.6.1
\--- org.apache.poi:poi-ooxml -> 4.1.0
     +--- org.apache.poi:poi:4.1.0 (*)
     +--- org.apache.poi:poi-ooxml-schemas:4.1.0
     |    \--- org.apache.xmlbeans:xmlbeans:3.1.0
     +--- org.apache.commons:commons-compress:1.18
     \--- com.github.virtuald:curvesapi:1.06

Erläuterung

build.gradle


dependencyManagement {
    dependencies {
        dependencySet(group: "org.apache.poi", version: "4.1.0") {
            entry "poi"
            entry "poi-ooxml"
        }
    }
}

Mit --dependencySet können Sie Versionen mehrerer Artefakte in derselben Gruppe gleichzeitig angeben

Schließen Sie bestimmte Bibliotheken von Übergangsabhängigkeiten aus

build.gradle


...

dependencyManagement {
    dependencies {
        dependency("org.apache.poi:poi:4.1.0") {
            exclude "commons-codec:commons-codec"
        }
    }
}

dependencies {
    implementation "org.apache.poi:poi"
}

...

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.poi:poi -> 4.1.0
     +--- org.apache.commons:commons-collections4:4.3
     \--- org.apache.commons:commons-math3:3.6.1

Erläuterung

build.gradle


dependencyManagement {
    dependencies {
        dependency("org.apache.poi:poi:4.1.0") {
            exclude "commons-codec:commons-codec"
        }
    }
}

--Sie können bestimmte Bibliotheken in Übergangsabhängigkeiten mit exclude () ausschließen

Bei Angabe mit dependencySet

build.gradle


...

dependencyManagement {
    dependencies {
        dependencySet(group: "org.apache.poi", version: "4.1.0") {
            entry("poi") {
                exclude "commons-codec:commons-codec"
            }
            entry "poi-ooxml"
        }
    }
}

dependencies {
    implementation "org.apache.poi:poi"
    implementation "org.apache.poi:poi-ooxml"
}

...

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.apache.poi:poi -> 4.1.0
|    +--- org.apache.commons:commons-collections4:4.3
|    \--- org.apache.commons:commons-math3:3.6.1
\--- org.apache.poi:poi-ooxml -> 4.1.0
     +--- org.apache.poi:poi:4.1.0 (*)
     +--- org.apache.poi:poi-ooxml-schemas:4.1.0
     |    \--- org.apache.xmlbeans:xmlbeans:3.1.0
     +--- org.apache.commons:commons-compress:1.18
     \--- com.github.virtuald:curvesapi:1.06

Stückliste lesen

build.gradle


...

dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
    }
}

dependencies {
    implementation "org.apache.commons:commons-lang3"
}

...

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.commons:commons-lang3 -> 3.8.1

Erläuterung

build.gradle


dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
    }
}

Überschreiben Sie die in der Stückliste deklarierte Version

Versionseigenschaften überschreiben

build.gradle


...
dependencyManagement {
    dependencies {
        imports {
            mavenBom("org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE") {
                bomProperty "commons-lang3.version", "3.9"
            }
        }
    }
}

dependencies {
    implementation "org.apache.commons:commons-lang3"
}
...

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.commons:commons-lang3 -> 3.9

Erläuterung

build.gradle


            mavenBom("org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE") {
                bomProperty "commons-lang3.version", "3.9"
            }

Es gibt auch eine Möglichkeit, mit "bomProperties (Map)" zu schreiben.

bomProperties(Map)Beispiel angegeben durch


dependencyManagement {
    dependencies {
        imports {
            mavenBom("org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE") {
                bomProperties([
                    "commons-lang3.version": "3.9",
                    "commons-pool2.version": "2.6.1"
                ])
            }
        }
    }
}

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.apache.commons:commons-lang3 -> 3.9
\--- org.apache.commons:commons-pool2 -> 2.6.1

Sie können es auch in einer erweiterten Eigenschaft deklarieren.

Beispiel in erweiterten Eigenschaften angegeben


ext["commons-lang3.version"] = "3.8"
ext["commons-pool2.version"] = "2.6.0"

dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
    }
}

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.apache.commons:commons-lang3 -> 3.8
\--- org.apache.commons:commons-pool2 -> 2.6.0

Abhängigkeitsmanagement überschreiben

build.gradle


dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
        dependency "org.apache.commons:commons-lang3:3.9"
    }
}

dependencies {
    implementation "org.apache.commons:commons-lang3"
}

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.commons:commons-lang3 -> 3.9

Erläuterung

build.gradle


dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
        dependency "org.apache.commons:commons-lang3:3.9"
    }
}

Sie können auch überschrieben werden, indem Sie die Version normal angeben, wenn Sie eine Abhängigkeit deklarieren.

So geben Sie die Version in der Abhängigkeitsdeklaration an


dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }

        dependency "org.apache.commons:commons-lang3:3.9"
        dependency "org.apache.commons:commons-pool2:2.6.1"
    }
}

dependencies {
    implementation "org.apache.commons:commons-lang3"       //Wenn Sie die Version nicht angeben
    implementation "org.apache.commons:commons-pool2:2.6.0" //Wenn Sie die Version angeben
}

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.apache.commons:commons-lang3 -> 3.9
\--- org.apache.commons:commons-pool2:2.6.0

Wenn Sie die direkt in der Abhängigkeitsdeklaration angegebene Version ignorieren möchten, setzen Sie die Option "overriddenByDependencies" auf "false".

Ignorieren, wenn eine direkte Version angegeben ist


dependencyManagement {
    overriddenByDependencies = false
    
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }

        dependency "org.apache.commons:commons-lang3:3.9"
        dependency "org.apache.commons:commons-pool2:2.6.1"
    }
}

dependencies {
    implementation "org.apache.commons:commons-lang3"
    implementation "org.apache.commons:commons-pool2:2.6.0"
}

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.apache.commons:commons-lang3 -> 3.9
\--- org.apache.commons:commons-pool2:2.6.0 -> 2.6.1

Beachten Sie die Eigenschaften der geladenen Stückliste

build.gradle


dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
    }
}

task showBomProperty {
    doFirst {
        println "commons-lang3.version = ${dependencyManagement.importedProperties["commons-lang3.version"]}"
    }
}

Ausführungsergebnis


> gradle showBomProperty
...
commons-lang3.version = 3.8.1

Erläuterung

build.gradle


task showBomProperty {
    doFirst {
        println "commons-lang3.version = ${dependencyManagement.importedProperties['commons-lang3.version']}"
    }
}

Exclusions Versuchen Sie zunächst, eine Abhängigkeit von "commons-dbcp2" zu deklarieren, ohne die Spring Boot-Stückliste zu laden.

build.gradle


plugins {
    id "java"
}

repositories {
    mavenCentral()
}

dependencies {
    implementation "org.apache.commons:commons-dbcp2:2.5.0"
}
...

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.commons:commons-dbcp2:2.5.0
     +--- org.apache.commons:commons-pool2:2.6.0
     \--- commons-logging:commons-logging:1.2

Es ist ersichtlich, dass es eine Abhängigkeit von "Commons-Logging" enthält.

Laden Sie als Nächstes die Spring Boot-Stückliste und probieren Sie es aus.

build.gradle


dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
    }
}

dependencies {
    implementation "org.apache.commons:commons-dbcp2"
}

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.commons:commons-dbcp2 -> 2.5.0
     \--- org.apache.commons:commons-pool2:2.6.0 -> 2.6.2

Es ist ersichtlich, dass die Abhängigkeit von "Commons-Logging" weg ist.

Dies ist die Spring Boot-Stückliste Abhängigkeit von der durch Ausschluss angegebenen Commons-Protokollierung Dies geschieht aufgrund von -boot-project / spring-boot-dependencies / pom.xml # L1481).

Wenn Sie dieses Verhalten stoppen möchten (auch wenn es in der Stückliste als "Ausschluss" angegeben ist, möchten Sie, dass es als Abhängigkeit aufgenommen wird), setzen Sie "applyMavenExclusions" auf "false".

build.gradle


dependencyManagement {
    applyMavenExclusions = false
    
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
    }
}

dependencies {
    implementation "org.apache.commons:commons-dbcp2"
}

Ausführungsergebnis


> gradle dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
\--- org.apache.commons:commons-dbcp2 -> 2.5.0
     +--- org.apache.commons:commons-pool2:2.6.0 -> 2.6.2
     \--- commons-logging:commons-logging:1.2

Die Abhängigkeit von "Commons-Logging" wurde wiederhergestellt.

Für jede Konfiguration festlegen

build.gradle


configurations {
    hoge
    fuga
    piyo
}

dependencyManagement {
    dependencies {
        dependency "org.apache.commons:commons-lang3:3.9"
    }

    hoge {
        dependencies {
            dependency "org.apache.commons:commons-lang3:3.8"
        }
    }

    fuga {
        dependencies {
            dependency "org.apache.commons:commons-lang3:3.8.1"
        }
    }
}

dependencies {
    hoge "org.apache.commons:commons-lang3"
    fuga "org.apache.commons:commons-lang3"
    piyo "org.apache.commons:commons-lang3"
}

Ausführungsergebnis


> gradle dependencies --configuration hoge
...
hoge
\--- org.apache.commons:commons-lang3 -> 3.8

> gradle dependencies --configuration fuga
...
fuga
\--- org.apache.commons:commons-lang3 -> 3.8.1

> gradle dependencies --configuration piyo
...
piyo
\--- org.apache.commons:commons-lang3 -> 3.9

Erläuterung

build.gradle


dependencyManagement {
    dependencies {
        dependencies {
            dependency "org.apache.commons:commons-lang3:3.9"
        }
    }

    hoge {
        dependencies {
            dependency "org.apache.commons:commons-lang3:3.8"
        }
    }

    fuga {
        dependencies {
            dependency "org.apache.commons:commons-lang3:3.8.1"
        }
    }
}

Siehe die Abhängigkeitsversion

build.gradle


dependencyManagement {
    dependencies {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
        }
        dependency "org.apache.commons:commons-pool2:2.6.0"
    }

    testImplementation {
        dependencies {
            dependency "org.apache.commons:commons-lang3:3.9"
            dependency "org.apache.commons:commons-pool2:2.6.1"
        }
    }
}

task showManagedVersions {
    doFirst {
        println """\
        |[default]
        |  commons-lang3 = ${dependencyManagement.managedVersions['org.apache.commons:commons-lang3']}
        |  commons-pool2 = ${dependencyManagement.managedVersions['org.apache.commons:commons-pool2']}
        |
        |[testImplementation]
        |  commons-lang3 = ${dependencyManagement.testImplementation.managedVersions['org.apache.commons:commons-lang3']}
        |  commons-pool2 = ${dependencyManagement.testImplementation.managedVersions['org.apache.commons:commons-pool2']}
        |""".stripMargin()
    }
}

Ausführungsergebnis


> gradle showManagedVersions
...
[default]
  commons-lang3 = 3.8.1
  commons-pool2 = 2.6.0

[testImplementation]
  commons-lang3 = 3.9
  commons-pool2 = 2.6.1

Erläuterung

build.gradle


    doFirst {
        println """\
        |[default]
        |  commons-lang3 = ${dependencyManagement.managedVersions['org.apache.commons:commons-lang3']}
        |  commons-pool2 = ${dependencyManagement.managedVersions['org.apache.commons:commons-pool2']}
        |
        |[testImplementation]
        |  commons-lang3 = ${dependencyManagement.testImplementation.managedVersions['org.apache.commons:commons-lang3']}
        |  commons-pool2 = ${dependencyManagement.testImplementation.managedVersions['org.apache.commons:commons-pool2']}
        |""".stripMargin()
    }

Dinge, die Sie bei der Verwendung in einem Multiprojekt beachten sollten

Es gibt verschiedene Möglichkeiten, die in der Stückliste deklarierte Version zu überschreiben, aber die direkte Abhängigkeitsmethode wird möglicherweise ** nicht in mehreren Projekten verwendet **.

Beispiele für Probleme

Angenommen, Sie haben eine Spring Boot-Anwendung mit der folgenden Konfiguration erstellt.

Projektstruktur


|-build.gradle
|-settings.gradle
|
|-common/
| |-src/main/java/
| | `-sample/common/
| |   `-CommonComponent.java
| `-build.gradle
|
`-boot/
  |-src/main/java/
  | `-sample/
  |   `-SampleBootApplication.java
  `-build.gradle

--common ist ein Bild, auf das von mehreren Projekten verwiesen wird (hier wird es der Einfachheit halber nur vom boot-Projekt referenziert). --boot ist ein Spring Boot-Projekt

CommonComponent.java


package sample.common;

import org.springframework.stereotype.Component;
import org.apache.commons.lang3.ObjectUtils;

@Component
public class CommonComponent {

    public void method(Object obj) {
        System.out.println(ObjectUtils.isEmpty(obj));
    }
}

--Verwenden Sie "ObjectUtils.isEmpty ()" von "commons-lang3", um auszugeben, ob das empfangene Objekt leer ist.

SampleBootApplication.java


package sample;

import sample.common.CommonComponent;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class SampleBootApplication {

    public static void main(String[] args) {
        try (ConfigurableApplicationContext context = SpringApplication.run(SampleBootApplication.class, args)) {
            CommonComponent common = context.getBean(CommonComponent.class);
            common.method("Hello World");
        }
    }
}

Angenommen, Sie schreiben jedes "build.gradle" dieses Multiprojekts wie folgt:

/build.gradle


plugins {
    id "org.springframework.boot" version "2.1.6.RELEASE" apply false
    id "io.spring.dependency-management" version "1.0.8.RELEASE" apply false
}

subprojects {
    apply plugin: "java"
    apply plugin: "io.spring.dependency-management"

    repositories {
        mavenCentral()
    }

    dependencyManagement {
        dependencies {
            imports {
                mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
            }
        }
    }

    sourceCompatibility = 11
    targetCompatibility = 11

    compileJava.options.encoding = "UTF-8"
}

/common/build.gradle


dependencies {
    implementation "org.springframework:spring-context"
    implementation "org.apache.commons:commons-lang3:3.9"
}

/boot/build.gradle


apply plugin: "org.springframework.boot"

dependencies {
    implementation project(":common")
    implementation "org.springframework.boot:spring-boot-starter"
}

Wenn Sie die Anwendung mit dieser Einstellung starten, ist dies wie folgt.

Ausführungsergebnis


> gradle bootRun
...

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.6.RELEASE)

...
2019-07-06 20:06:16.365  INFO 16428 --- [           main] sample.SampleBootApplication             : Started SampleBootApplication in 0.846 seconds (JVM running for 1.335)
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.lang3.ObjectUtils.isEmpty(Ljava/lang/Object;)Z
        at sample.common.CommonComponent.method(CommonComponent.java:10)
        at sample.SampleBootApplication.main(SampleBootApplication.java:14)

> Task :boot:bootRun FAILED

FAILURE: Build failed with an exception.

Was ist passiert?

Sie können sehen, was passiert ist, indem Sie die Abhängigkeiten jedes Projekts ausgeben.

#häufige Projektabhängigkeiten
> gradle :common:dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.springframework:spring-context -> 5.1.8.RELEASE
|    ...
\--- org.apache.commons:commons-lang3:3.9

#Boot-Projektabhängigkeiten
> gradle :boot:dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- project :common
|    +--- org.springframework:spring-context -> 5.1.8.RELEASE
|    |    ...
|    \--- org.apache.commons:commons-lang3:3.9 -> 3.8.1
\--- org.springframework.boot:spring-boot-starter -> 2.1.6.RELEASE
     ...

Warum unterscheiden sich die Versionen?

/common/build.gradle


dependencies {
    implementation "org.springframework:spring-context"
    implementation "org.apache.commons:commons-lang3:3.9"
}

/boot/build.gradle


apply plugin: "org.springframework.boot"

dependencies {
    implementation project(":common")
    implementation "org.springframework.boot:spring-boot-starter"
}

Wie repariert man

/build.gradle


plugins {
    id "org.springframework.boot" version "2.1.6.RELEASE" apply false
    id "io.spring.dependency-management" version "1.0.8.RELEASE" apply false
}

subprojects {
    apply plugin: "java"
    apply plugin: "io.spring.dependency-management"

    repositories {
        mavenCentral()
    }

    dependencyManagement {
        dependencies {
            imports {
                mavenBom "org.springframework.boot:spring-boot-dependencies:2.1.6.RELEASE"
            }

            dependency "org.apache.commons:commons-lang3:3.9"
        }
    }

    ...
}

/common/build.gradle


dependencies {
    implementation "org.springframework:spring-context"
    implementation "org.apache.commons:commons-lang3"
}

Abhängigkeiten überprüfen


#gemeinsame Abhängigkeiten
> gradle :common:dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.springframework:spring-context -> 5.1.8.RELEASE
|    ...
\--- org.apache.commons:commons-lang3 -> 3.9

#Boot-Abhängigkeit
> gradle :boot:dependencies --configuration runtimeClasspath
...
runtimeClasspath - Runtime classpath of source set 'main'.
+--- project :common
|    ...
|    \--- org.apache.commons:commons-lang3 -> 3.9
\--- org.springframework.boot:spring-boot-starter -> 2.1.6.RELEASE
     ...

Ausführungsergebnis


> gradle bootRun
...
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.6.RELEASE)

...

false

―― Natürlich tritt auch dann kein Fehler auf, wenn Sie es ausführen.

Referenz

Recommended Posts

Hinweise zur Verwendung des Abhängigkeitsmanagement-Plugins
Sitzungsverwaltung für Spring Security-Nutzungsnotizen
Verwendungshinweise zu JavaParser
Hinweise zur Verwendung von WatchService
PlantUML-Nutzungsnotiz
Verwendungshinweise zu JUnit5
Hinweise zur Verwendung von Spring Shell
Spring Security-Nutzungsnotiz CSRF
Spring Security-Nutzungsnotiz Run-As
Sicherheit der Verwendungsnotizmethode für Spring Security
Persönliches Memo Installation des Eclipse-Plug-Ins
Abhängigkeitsmanagement in geschichteter Architektur
Eclipse 4.8 Einführungsnotiz (Plugin Edition)
Spring Security-Nutzungsnotiz CORS
Spring Security-Verwendungsnotiztest
Spring Security-Nutzungsnotiz Authentifizierung / Autorisierung
JCA-Verwendungsprotokoll (Java Encryption Architecture)
Antwortheader für die Verwendung von Spring Security
Spring Security-Nutzungsnotiz Basic / Mechanismus