[JAVA] Best Practices für die Versionierung von Gradle-abhängigen Paketen

Überblick

Als Ergebnis der Prüfung der folgenden Punkte scheint die Verwaltung des Ziels mit der Eigenschaft außerhalb des + Arrays transparent und einfach zu warten zu sein. Ich bezog mich auf verschiedene Open Source-Projekte und die Meinungen anderer Ingenieure.

Solides Schreiben

build.gradle


dependencies {
    // JUnit
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.2.0'
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.2.0'
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.2.0'
}

Variabilisierung

build.gradle


def junitVersion = '5.2.0'

dependencies {
    // JUnit
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: junitVersion
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: junitVersion
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: junitVersion
}

Außerhalb des Grundstücks

Da Gradle möglicherweise unter dem von Gradle bereits verwendeten Eigenschaftsnamen leidet, haben wir uns entschlossen, den Schlüssel für die handgefertigte Eigenschaft im Großschlangenbuchstaben zu verwalten. Davon abgesehen ist es ungefähr halb und halb mit punktgetrennter Kleinbuchstabenverwaltung. Ich dachte, wenn ich es in den oberen Schlangenkasten stecke, würde es sich zumindest nicht mit dem in Gradle überschneiden, also habe ich das getan.

gradle.properties


LIBRARY_VERSION_JUNIT=5.2.0

build.gradle


def junitVersion = (String) project.LIBRARY_VERSION_JUNIT

dependencies {
    // JUnit
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: junitVersion
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: junitVersion
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: junitVersion
}

Verwalten Sie das Ziel mit einem Array, während Sie zur Eigenschaft gehen

gradle.properties


LIBRARY_VERSION_JUNIT=5.2.0

build.gradle


def libraryVersions = [
        junit: (String) project.LIBRARY_VERSION_JUNIT,
]

dependencies {
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: libraryVersions.junit
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: libraryVersions.junit
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: libraryVersions.junit
}

Der Vorteil besteht darin, dass es als Quelle in libraryVersions. gespeichert werden kann und als Liste der verfügbaren Pakete durch Gruppierung behandelt werden kann. Das Hinzufügen eines Pakets ist problematisch, da Eigenschaften bzw. Arrays geschrieben werden müssen. Wenn jedoch nur die Version aktualisiert wird, müssen nur die Eigenschaften geändert werden, sodass die Probleme später verringert werden sollten.

Recommended Posts

Best Practices für die Versionierung von Gradle-abhängigen Paketen
# Java: vol1: [Java · Best Practice für die JDK-Versionsverwaltung]
[Rails-Versionsverwaltung] Rails-Versions-Downgrade