[JAVA] Erstellen Sie ein Maven-Repository in AWS S3

Wenn Sie ein Maven-Repository benötigen

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.

Verfahren

Erstellen und verwenden Sie das Maven-Repository in der folgenden Reihenfolge.

  1. Erstellen Sie in S3 einen Bucket für das Maven-Repository
  2. Erstellen Sie einen Benutzer, um auf das S3 Maven-Repository zuzugreifen
  3. Einstellungen für die Bibliotheksregistrierung mit dem Gradle-Plugin
  4. Client-Einstellungen für die Verwendung der Bibliothek

1. Erstellen Sie einen Bucket für das Maven-Repository

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.

2. Erstellen Sie einen Benutzer, um auf das Maven-Repository zuzugreifen

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/*"
            ]
        }
    ]
}

3. Einstellungen für die Bibliotheksregistrierung mit dem Gradle-Plugin

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

4. Client-Einstellungen für die Verwendung der Bibliothek

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')
		}
	}
}

Zusammenfassung

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

Erstellen Sie ein Maven-Repository in AWS S3
Erstellen Sie ein Maven-Repository für AWS S3-Services
Erstellen Sie ein internes Maven-Repository in Google Cloud Storage
Erstellen Sie einen Minecraft-Server auf AWS
Erstellen Sie eine Laravel-Umgebung auf einer AWS-Instanz
Memo zum Erstellen einer Servlet-Umgebung auf EC2 von AWS
Erstellen Sie eine Ruby on Rails-Entwicklungsumgebung in AWS Cloud9
Abhängigkeitsmanagement in Gradle mithilfe des Maven-Repositorys unter Amazon S3
Erstellen Sie eine XAMPP-Umgebung unter Ubuntu
So erstellen Sie ein Maven-Repository für 2020
Erstellen Sie eine Java-Entwicklungsumgebung auf dem Mac
Erstellen Sie eine Java 8-Entwicklungsumgebung mit AWS Cloud 9
Erstellen Sie eine Umgebung mit Docker unter AWS
Erstellen Sie eine JMeter-Umgebung auf Ihrem Mac
Erstellen Sie mit CentOS7 + Nginx + pm2 + Nuxt.js eine Entwicklungsumgebung auf AWS EC2
[AWS SDK für Java] Legen Sie die Wiederholungsrichtlinie für den S3-Client fest
Erstellen eines Testflusses auf CircleCI mit Jib
Ich habe versucht, ein Remote-Repository für Maven einzurichten
Erstellen Sie eine Java-Ausführungsumgebung auf Sakura VPS
So erstellen Sie eine Pytorch-Umgebung unter Ubuntu
Eine hohe Rechnung von AWS während der Entwicklung auf Schienen ...
Lokaler Cache des Maven-Repositorys
Maven auf CentOS 7 Tutorial
Java baut ein Dreieck
Erstellen eines lokalen Repositorys
Erstellen eines Docker-Hosts in AWS mit Docker Machine (persönliches Memorandum)
Ein Memorandum Note, wenn Apache Maven auf einem internen Proxy ausgeführt wird
[Docker] Erstellen Sie eine Site mit Hugo und veröffentlichen Sie sie auf GitHub
So gelangen Sie in einen Container, der auf AWS Fargate ausgeführt wird
So stellen Sie eine Kotlin (Java) -App auf AWS fargate bereit
Hinweise zum Erstellen von Jitsi Meet on Azure mit Docker-Compose
Erstellen Sie mit VirtualBox eine virtuelle CentOS 8-Umgebung auf Ihrem Mac
So stellen Sie die Rails-Anwendung in AWS bereit (Artikelzusammenfassung)
Mit [AWS] CodeStar können Sie ein Spring (Java) -Projekt erstellen, das auf Lambda in nur 3 Minuten ausgeführt wird! !!