Es gibt viele Fälle, in denen Sie Java-Bibliotheken in einer privaten Umgebung wie z. B. intern verwalten möchten. Ab einem bestimmten Umfang werden wir Nexus einführen, aber es gibt Zeiten, in denen wir es etwas einfacher machen wollen. Mit diesem Eintrag können Sie ein Maven-Repository mit AWS S3 erstellen.
Erstellen und verwenden Sie das Maven-Repository in der folgenden Reihenfolge.
Es gibt nichts Besonderes zu erwähnen und erstellen Sie wie gewohnt einen Bucket für S3. Angenommen, Sie haben einen Eimer namens "my-maven" erstellt.
Obwohl nicht erforderlich, erstellen Sie einen Benutzer für das Maven-Repository und fügen Sie S3-Berechtigungen für eine ordnungsgemäße Zugriffssteuerung hinzu. Zu diesem Zeitpunkt erhalten Sie außerdem die AWS-Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel.
Zugangsrichtlinien
{
"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/*"
]
}
]
}
Wenden Sie das Plug-In "Maven-Publish" an und konfigurieren Sie die Einstellungen für die Registrierung der Bibliothek.
build.gradle
apply plugin: 'maven-publish'
def tag = System.getenv('CIRCLE_TAG') //Erkennt Git-Tag-Push(Beispiel für CircleCI)
def buildVersion = "1.0.0"
group = 'com.example'
version = tag ? "${tag}-RELEASE" : "${buildVersion}-SNAPSHOT" //RELEASE für Tag Push, sonst SNAPSHOT(Dieser Bereich wird entsprechend dem tatsächlichen Betrieb festgelegt)
//Einfügen der Quelle in die im Repository registrierte Bibliothek
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"
}
}
}
}
Verwenden Sie die folgenden Befehle, um die Quelle zu erstellen und das Repository zu registrieren. Normalerweise verwenden Sie es über CI usw.
$ gradle publish
Wenn Sie das erstellte Maven-Repository auf der Clientseite hinzufügen, können Sie es wie jedes andere Repository verwenden.
build.gradle
repositories {
mavenCentral()
//Fügen Sie Folgendes hinzu
maven {
url "s3://my-maven"
credentials(AwsCredentials) {
accessKey System.getenv('AWS_ACCESS_KEY_ID')
secretKey System.getenv('AWS_SECRET_ACCESS_KEY')
}
}
}
Es ist einfach zu erstellen und bietet daher eine hervorragende Möglichkeit, Ihre Bibliothek bei Bedarf zu verwalten. Auch dieses Beispiel war Gradle, aber Sie können dasselbe mit Maven tun.
Recommended Posts