Il existe de nombreux cas où vous souhaitez gérer des bibliothèques Java dans un environnement privé tel qu'en interne. À une certaine échelle, nous présenterons Nexus, mais il y a des moments où nous voulons rendre les choses un peu plus faciles. Cette entrée est un moyen de créer un référentiel Maven à l'aide d'AWS S3.
Créez et utilisez le référentiel Maven dans l'ordre suivant.
Il n'y a rien de spécial à mentionner, et comme d'habitude, créez un Bucket pour S3.
Disons que vous avez créé un bucket appelé my-maven
.
Bien que cela ne soit pas obligatoire, créez un utilisateur pour le référentiel Maven et ajoutez des autorisations S3 pour un contrôle d'accès approprié. De plus, à ce moment, vous obtiendrez l '«ID de clé d'accès» AWS et la «Clé d'accès secrète».
Politique d'accès
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::my-maven",
"arn:aws:s3:::my-maven/*"
]
}
]
}
Appliquez le plug-in maven-publish
et configurez les paramètres d'enregistrement de la bibliothèque.
build.gradle
apply plugin: 'maven-publish'
def tag = System.getenv('CIRCLE_TAG') //Détecte le push de balises git(Exemple pour CircleCI)
def buildVersion = "1.0.0"
group = 'com.example'
version = tag ? "${tag}-RELEASE" : "${buildVersion}-SNAPSHOT" //RELEASE pour tag push, INSTANTANÉ sinon(Cette zone est spécifiée en fonction de l'opération réelle)
//Pour inclure la source dans la bibliothèque enregistrée dans le référentiel
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
publishing {
repositories {
maven {
url "s3://my-maven"
credentials(AwsCredentials) {
accessKey System.getenv('AWS_ACCESS_KEY_ID')
secretKey System.getenv('AWS_SECRET_ACCESS_KEY')
}
}
}
publications {
mavenJava(MavenPublication) {
from components.java
artifact sourceJar {
classifier "sources"
}
}
}
}
Utilisez les commandes suivantes pour créer la source et enregistrer le référentiel. Normalement, vous l'utiliserez via CI etc.
$ gradle publish
Si vous ajoutez le référentiel Maven créé côté client, vous pouvez l'utiliser comme n'importe quel autre référentiel.
build.gradle
repositories {
mavenCentral()
//Ajoutez ce qui suit
maven {
url "s3://my-maven"
credentials(AwsCredentials) {
accessKey System.getenv('AWS_ACCESS_KEY_ID')
secretKey System.getenv('AWS_SECRET_ACCESS_KEY')
}
}
}
C'est facile à créer, c'est donc un excellent moyen de gérer votre bibliothèque lorsque vous en avez besoin. Aussi, cet exemple était Gradle, mais vous pouvez faire la même chose avec Maven.
Recommended Posts