[JAVA] Gestion des dépendances dans Gradle à l'aide du référentiel Maven sur Amazon S3

Aperçu

Comme le titre l'indique, il décrit comment créer un référentiel Maven sur Amazon S3 et l'utiliser avec Gradle.

Lors du développement d'un module qui dépend d'un module interne, il est utilisé pour résoudre les dépendances et construire sur le serveur.

Objectif de cet article

Les objectifs de cet article sont 1 et 2 ci-dessous.

  1. Téléchargez la bibliothèque dans le référentiel Maven sur S3
  2. Téléchargez la bibliothèque ci-dessus à partir d'un autre projet Gradle

Concernant 2, en particulier, la bibliothèque peut être téléchargée lorsque la commande "gradle build" est exécutée avec les paramètres build.gradle suivants.

build.gradle


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

Le contenu suivant sort du cadre de cet article. Un jour encore.

supposition

Télécharger dans le référentiel Maven

Création de projet Gradle

Exécutez la commande suivante.

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

Le fichier généré ressemble à ceci.

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

À ce stade, le contenu de build.gradle est le suivant. (Les commentaires inutiles et les paramètres de bibliothèque dépendants ont été supprimés)

build.gradle


apply plugin: 'java'

//La bibliothèque dépendante n'est pas définie, donc
//Aucun référentiel et aucune dépendance ne sont nécessaires pour le moment,
//Je vais l'utiliser plus tard, donc je vais le laisser.
repositories {
    jcenter()
}

dependencies {
}

Pour confirmation, tapez "gradle build" dans la racine du projet et "gradle-upload-s3repo.jar" sera généré dans build / libs. Jusqu'à présent, c'est la fonction par défaut du plug-in java. Après vérification, supprimons le résultat de la construction par "gradle clean".

Définir groupId, artifactId, version

Maven définit de manière unique une bibliothèque avec une combinaison de groupId, artifactId et version.

La bibliothèque créée cette fois suit la convention,

Clé valeur
groupId jp.co.goalist
artifactId library
version 1.0.0

Allons.

Ajoutez les paramètres suivants à build.gradle.

build.gradle


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

Modifiez settings.gradle comme suit.

settings.gradle


rootProject.name = 'library'

Créer un compartiment pour le référentiel sur S3

Nous allons sauter les étapes, mais créer un bucket à utiliser comme référentiel.

Cette fois, créez "s3: //repository.hoge/maven/".

Définir les informations d'accès à S3 à partir de l'environnement de développement

Définissez l'URL du référentiel, l'ID de clé d'accès utilisateur IAM et la clé d'accès secrète dans ~ / .gradle / gradle.properties. En se référant à cela côté projet, il n'est pas nécessaire de l'inclure dans le projet, donc c'est sûr en termes de sécurité. (Je dis des choses normales) Il n'est pas nécessaire de définir l'ID de clé d'accès, etc. dans chaque projet.

gradle.properties


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

Configurer la tâche uploadArchives pour le plugin maven

Utilisez le plugin maven uploadArchives pour télécharger dans le référentiel Maven. Ajoutez les paramètres pour faire référence à l'URL du référentiel, à l'ID de clé d'accès utilisateur IAM et à la clé d'accès secrète que vous avez définies précédemment.

build.gradle


apply plugin: 'maven'

build.gradle


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

Nous utiliserons org.springframework.build: aws-maven pour accéder à S3, donc ajoutez les paramètres aux dépendances. Cette fois, j'utiliserai la dernière version 5.0.0.RELEASE.

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'//ajouter à
}

Ceci termine le réglage. Le résultat final est le suivant.

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'

Exécutez la tâche uploadArchives

Exécutez la commande suivante et si BUILD SUCCESSFULL s'affiche, cela réussit.

gradle uploadArchives

Lorsque vous vérifiez S3

Je pense que la bibliothèque a été téléchargée sous s3: //repository.hoge/maven/.

Télécharger à partir du référentiel Maven

Créez un projet Gradle qui dépend de la bibliothèque que vous avez téléchargée cette fois.

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

Modifiez build.gradle pour définir la référence du référentiel S3 et les paramètres de dépendance.

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'
}

Exécutez la commande suivante, et si vous pouvez confirmer que CONSTRUCTION RÉUSSIE, vous avez terminé.

gradle build

à la fin

En fonctionnement réel, il devrait être possible de télécharger uniquement à partir du serveur de construction afin que le développeur puisse uniquement s'y référer. Réutilisons le module.

Recommended Posts

Gestion des dépendances dans Gradle à l'aide du référentiel Maven sur Amazon S3
Créer un référentiel Maven sur les services AWS S3
Créer un référentiel Maven sur AWS S3
Gestion des dépendances dans une architecture en couches
Tendances populaires dans Gradle et Maven
Parcourez les artefacts Maven locaux à Gradle
Création d'un projet (et d'un référentiel GitHub) à l'aide de Java et Gradle avec IntelliJ IDEA
Générer de la documentation DB à l'aide de SchemaSpy dans Gradle