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