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.
** Personnes qui utilisent déjà GCP pour le développement / l'exploitation ** Tout ce que vous avez à faire est de créer un bucket GCS et de définir les autorisations, donc c'est facile à installer!
** Ceux qui en ont assez de configurer des sous-projets Gradle à l'aide de sous-modules Git ** C'est facile car vous pouvez l'utiliser comme si vous tiriez un fichier jar de Maven Central!
** Les personnes qui ont déjà mis en place des référentiels internes tels que Sonatype Nexus mais qui en ont assez de la maintenance / maintenance ** GCS est un service géré, donc Google s'en chargera!
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:
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.
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
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
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'
}
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
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. ..