[JAVA] Abhängigkeitsmanagement in Gradle mithilfe des Maven-Repositorys unter Amazon S3

Überblick

Wie der Titel schon sagt, wird beschrieben, wie Sie ein Maven-Repository in Amazon S3 erstellen und mit Gradle verwenden.

Wenn Sie ein Modul entwickeln, das von einem internen Modul abhängt, wird es verwendet, um Abhängigkeiten aufzulösen und auf dem Server aufzubauen.

Ziel dieses Artikels

Die Ziele dieses Artikels sind 1 und 2 unten.

  1. Laden Sie die Bibliothek in das Maven-Repository von S3 hoch
  2. Laden Sie die obige Bibliothek von einem anderen Gradle-Projekt herunter

Insbesondere in Bezug auf 2 kann die Bibliothek heruntergeladen werden, wenn der Befehl "gradle build" mit den folgenden build.gradle-Einstellungen ausgeführt wird.

build.gradle


dependencies {
    compile 'jp.co.goalist:library:1.0.0'
}

Der folgende Inhalt wird in diesem Artikel nicht behandelt. Eines Tages wieder.

Annahme

In das Maven-Repository hochladen

Gradle-Projekterstellung

Führen Sie den folgenden Befehl aus.

mkdir gradle-upload-s3repo
cd gradle-upload-s3repo/
gradle init --type=java-library

Die generierte Datei sieht folgendermaßen aus.

.
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
    ├── main
    │   └── java
    │       └── Library.java
    └── test
        └── java
            └── LibraryTest.java

Zu diesem Zeitpunkt ist der Inhalt von build.gradle wie folgt. (Unnötige Kommentare und abhängige Bibliothekseinstellungen wurden gelöscht.)

build.gradle


apply plugin: 'java'

//Die abhängige Bibliothek ist also undefiniert
//Derzeit sind keine Repositorys und Abhängigkeiten erforderlich.
//Ich werde es später benutzen, also werde ich es verlassen.
repositories {
    jcenter()
}

dependencies {
}

Geben Sie zur Bestätigung "gradle build" in das Projektstammverzeichnis ein und "gradle-upload-s3repo.jar" wird in build / libs generiert. Bisher ist dies die Standardfunktion des Java-Plug-Ins. Nach der Überprüfung löschen wir das Build-Ergebnis mit "gradle clean".

Definieren Sie die Gruppen-ID, die Artefakt-ID und die Version

Maven definiert eine Bibliothek eindeutig mit einer Kombination aus Gruppen-ID, Artefakt-ID und Version.

Die diesmal erstellte Bibliothek folgt der Konvention,

Schlüssel Wert
groupId jp.co.goalist
artifactId library
version 1.0.0

Lasst uns.

Fügen Sie build.gradle die folgenden Einstellungen hinzu.

build.gradle


group = "jp.co.goalist"
version = "1.0.0" 

Ändern Sie settings.gradle wie folgt.

settings.gradle


rootProject.name = 'library'

Erstellen Sie einen Bucket für das Repository in S3

Wir werden die Schritte überspringen, aber einen Bucket erstellen, der als Repository verwendet werden kann.

Erstellen Sie dieses Mal "s3: //repository.hoge/maven/".

Setzen Sie die Zugriffsinformationen aus der Entwicklungsumgebung auf S3

Legen Sie die Repository-URL, die IAM-Benutzerzugriffsschlüssel-ID und den geheimen Zugriffsschlüssel in ~ / .gradle / gradle.properties fest. Wenn Sie auf der Projektseite darauf verweisen, ist es nicht erforderlich, es in das Projekt aufzunehmen, sodass es in Bezug auf die Sicherheit sicher ist. (Ich sage normale Dinge) Sie müssen nicht in jedem Projekt die Zugriffsschlüssel-ID usw. festlegen.

gradle.properties


goalistRepoUrl=s3://repository.hoge/maven/
awsAccessKeyId = AKIAJWORQEXXXXXXXXXX
awsSecretAccessKey = waTa0aakgK2e5hXXXXXXXXXXXXXXXXXXXXXXXXXX

Richten Sie die Aufgabe uploadArchives für das Maven-Plugin ein

Verwenden Sie das Maven-Plugin uploadArchives, um es in das Maven-Repository hochzuladen. Fügen Sie die Einstellungen hinzu, die auf die Repository-URL, die IAM-Benutzerzugriffsschlüssel-ID und den geheimen Zugriffsschlüssel verweisen, die Sie zuvor festgelegt haben.

build.gradle


apply plugin: 'maven'

build.gradle


uploadArchives {
    repositories {
        mavenDeployer {
            configuration = configurations.deployerJars
            repository(url: goalistRepoUrl) {
              authentication(userName: awsAccessKeyId, password: awsSecretAccessKey)
            }
        }
    }
}

Wir werden org.springframework.build: aws-maven verwenden, um auf S3 zuzugreifen. Fügen Sie daher die Einstellungen zu Abhängigkeiten hinzu. Dieses Mal werde ich die neueste Version 5.0.0.RELEASE verwenden.

http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.springframework.build%22%20AND%20a%3A%22aws-maven%22

build.gradle


configurations {
    deployerJars
}

dependencies {
    deployerJars 'org.springframework.build:aws-maven:5.0.0.RELEASE'//hinzufügen
}

Damit ist die Einstellung abgeschlossen. Das Endergebnis ist wie folgt.

build.gradle


apply plugin: 'java'
apply plugin: 'maven'

group = "jp.co.goalist"
version = "1.0.0" 

repositories {
    jcenter()
}

configurations {
    deployerJars
}

uploadArchives {
    repositories {
        mavenDeployer {
            configuration = configurations.deployerJars
            repository(url: goalistRepoUrl) {
              authentication(userName: awsAccessKeyId, password: awsSecretAccessKey)
            }
        }
    }
}

dependencies {
    deployerJars 'org.springframework.build:aws-maven:5.0.0.RELEASE'
}

settings.gradle


rootProject.name = 'library'

Führen Sie die Aufgabe uploadArchives aus

Führen Sie den folgenden Befehl aus. Wenn BUILD SUCCESSFULL angezeigt wird, ist dies erfolgreich.

gradle uploadArchives

Wenn Sie S3 überprüfen

Ich denke, die Bibliothek wurde unter s3: //repository.hoge/maven/ hochgeladen.

Download aus dem Maven-Repository

Erstellen Sie ein Gradle-Projekt, das von der Bibliothek abhängt, die Sie dieses Mal hochgeladen haben.

mkdir gradle-upload-s3repo-child
cd gradle-upload-s3repo-child/
gradle init --type=java-library

Ändern Sie build.gradle, um die S3-Repository-Referenz- und Abhängigkeitseinstellungen festzulegen.

build.gradle


apply plugin: 'java'

repositories {
    jcenter()
    maven {
        url goalistRepoUrl
        credentials(AwsCredentials) {
            accessKey awsAccessKeyId
            secretKey awsSecretAccessKey
        }
    }
}

dependencies {
    compile 'jp.co.goalist:library:1.0.0'
}

Führen Sie den folgenden Befehl aus, und wenn Sie bestätigen können, dass BUILD SUCCESSFUL ist, sind Sie fertig.

gradle build

schließlich

Im tatsächlichen Betrieb sollte es möglich sein, nur vom Build-Server hochzuladen, damit der Entwickler nur darauf verweisen kann. Lassen Sie uns das Modul wiederverwenden.

Recommended Posts

Abhängigkeitsmanagement in Gradle mithilfe des Maven-Repositorys unter Amazon S3
Erstellen Sie ein Maven-Repository für AWS S3-Services
Erstellen Sie ein Maven-Repository in AWS S3
Abhängigkeitsmanagement in geschichteter Architektur
Beliebte Trends bei Gradle und Maven
Durchsuchen Sie lokale Maven-Artefakte in Gradle
Erstellen eines Projekts (und eines GitHub-Repositorys) mit Java und Gradle mit IntelliJ IDEA
Generieren Sie die DB-Dokumentation mit SchemaSpy in Gradle