[JAVA] Créez un référentiel interne Maven sur Google Cloud Storage

introduction

Voici un résumé de la création et de l'utilisation d'un référentiel interne Maven sur Google Cloud Storage (GCS). Cela ressemble à la deuxième chose qui est écrite dans le document, mais je n'ai pas pu trouver un article qui résume de manière exhaustive comment créer un référentiel interne, comment transférer le fichier jar après l'avoir créé et comment l'utiliser, donc en tant que mémorandum Je vais le laisser.

En passant, puisque je suis un utilisateur de Gradle, je vais résumer la méthode lors de l'utilisation de Gradle.

Quelqu'un qui voudra peut-être essayer

Comment construire et comment utiliser

Documentation Gradle

La documentation officielle est de ici. D'ailleurs, selon Notes de publication, il semble que ce soit une fonctionnalité ajoutée dans la version 4.2. .. Il existe depuis un certain temps, je ne savais pas ... : gouttes de sueur:

Construire un référentiel interne

Tapez simplement une commande pour créer un bucket.

$ export BUCKET_NAME='your-inhouse-repository'
$ gsutil mb -c standard -l asia-northeast1 gs://${BUCKET_NAME}

C'est tout ce dont vous avez besoin pour le faire vous-même. Si vous développez avec plusieurs personnes, accordez au développeur l'accès au bucket.

Ci-dessous, le nom du bucket est your-inhouse-repository, coupez le chemin maven pour Maven en dessous, et parlez en supposant que Gradle fait référence à gcs: // your-inhouse-repository / maven. Procéder.

Méthode d'authentification

Puisqu'il s'agit d'un référentiel interne, il ne sera pas divulgué à l'extérieur. Il s'authentifie afin que seuls les comptes autorisés pour le compartiment puissent y accéder, mais la documentation dit:

When using a Google Cloud Storage backed repository default application credentials will be used with no further configuration required

Que sont les "informations d'identification par défaut de l'application"? Il semble qu'il existe un tel concept. Il s'appelle ADC dans GCP.

Lorsque vous travaillez localement, vous pouvez faire gcloud init et gcloud auth application-default login. Ensuite, l'ADC et tout le matériel sont mis au bon endroit et Gradle l'utilisera pour s'authentifier.

$ gcloud init
$ gcloud auth application-default login

Télécharger le fichier jar

Il s'agit d'un exemple de code côté bibliothèque. Vous pouvez télécharger le fichier jar à l'aide du plug-in Maven Publish (https://docs.gradle.org/current/userguide/publishing_maven.html).

build.gradle


plugins {
    id 'java-library'
    id 'maven-publish'
}

group = 'your.libs'
version = '1.0.0'

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
        }
    }
    repositories {
        //Spécifiez le référentiel interne comme destination de téléchargement.
        maven {
            url 'gcs://your-inhouse-repository/maven'
        }
    }
}

settings.gradle


rootProject.name = 'example-library'
$ gradle publish

Utilisation de fichiers jar

Il s'agit de l'exemple de code sur le côté qui utilise la bibliothèque. Ajoutez simplement le référentiel interne référencé aux «référentiels» et définissez les dépendances dans les «dépendances».

build.gradle


repositories {
    //Ajoutez le référentiel interne comme référence.
    maven {
        url 'gcs://your-inhouse-repository/maven'
    }
}

dependencies {
    //Tout ce que vous avez à faire est d'ajouter le pot en tant que dépendance et Gradle le trouvera pour vous.
    implementation 'your.libs:example-library:1.0.0'
}

Conseils lorsque les informations d'authentification ne changent pas

J'ai plusieurs comptes GCP pour un usage personnel et professionnel, mais même si je change les informations d'identification en effectuant gcloud init et gcloud auth application-default login, les informations avant que Gradle ne change J'ai rencontré le problème de faire référence à ... Je ne connaissais pas la cause et j'ai perdu environ une journée. : gouttes de sueur:

** C'est simple une fois que vous le savez, mais la cause était que le démon Gradle était en cours d'exécution et qu'il contenait les anciennes informations d'identification. ** **

Donc, une fois que vous arrêtez le démon, il utilisera vos informations d'identification après la commutation.

$ gradle --stop

Ou si vous leur dites explicitement de ne pas utiliser le démon, ils rechercheront vos informations d'identification actuelles.

$ gradle publish --no-daemon

De côté

Depuis le 25 juillet 2020, une version bêta d'un service appelé Artifact Registry spécialisé dans la gestion des artefacts de build est disponible. Il semble qu'il puisse également être utilisé comme référentiel Maven, mais c'est toujours comme la version alpha, donc j'attends ça avec impatience à partir de maintenant. ..

Recommended Posts

Créez un référentiel interne Maven sur Google Cloud Storage
Créer un référentiel Maven sur AWS S3
Créer un environnement de développement Ruby on Rails sur AWS Cloud9
Une note de service lors de l'exécution d'Apache Maven sur un proxy interne
Créez un environnement de traitement de données avec Google Cloud DataFlow + Pub / Sub
Créer un serveur Minecraft sur AWS
Créer un environnement XAMPP sur Ubuntu
Comment créer un référentiel Maven pour 2020
Créer un environnement de développement Java sur Mac
Créer un environnement de développement Java 8 avec AWS Cloud 9
Créez un environnement JMeter sur votre Mac
[Android] [Java] Télécharger des images sur GCS (Google Cloud Storage) avec Stream à l'aide de Glide
Création d'un flux de test sur CircleCI à l'aide de Jib
Créer un environnement Laravel sur une instance AWS
J'ai essayé de mettre en place un référentiel distant pour Maven
Créer un environnement d'exécution Java sur Sakura VPS
Comment créer un environnement Pytorch sur Ubuntu