Das Repository wird verwaltet und ist sehr praktisch. Wenn ich jedoch [Offizielles Dokument] [Dokument] lese, sollte ich das Token in die Umgebungsvariable laden ... Machst du jedes Mal so nervige Dinge? will nicht!
Also schrieb ich, um aus dem Profil zu lesen, das in der AWS CLI festgelegt worden wäre.
Sie haben bereits ein AWS CLI-Profil eingerichtet, mit dem Sie auf jedes CodeArtifact zugreifen können.
Kopieren Sie das Ganze unten
build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.amazonaws:aws-java-sdk-codeartifact:1.11.801'
}
}
import com.amazonaws.services.codeartifact.AWSCodeArtifactClient;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.codeartifact.model.GetAuthorizationTokenRequest;
def setAuthorizationToken = {mavenArtifactRepository, profile ->
def domainLevels = mavenArtifactRepository.url.getHost().split('\\.')
def artifactDomain = domainLevels[0].substring(0,domainLevels[0].lastIndexOf("-"))
def artifactOwner = domainLevels[0].substring(domainLevels[0].lastIndexOf("-")+1)
def region = domainLevels[domainLevels.length -3]
def client = AWSCodeArtifactClient.builder()
.withCredentials(new ProfileCredentialsProvider(profile))
.withRegion(region)
.build();
def result = client.getAuthorizationToken(new GetAuthorizationTokenRequest()
.withDomain(artifactDomain)
.withDomainOwner(artifactOwner)
);
mavenArtifactRepository.credentials {
username "aws"
password result.authorizationToken
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
maven {
url 'https://trial-558497472117.d.codeartifact.us-west-2.amazonaws.com/maven/trial/'
setAuthorizationToken(owner, "profileName")
}
}
dependencies {
implementation platform('com.amazonaws:aws-java-sdk-bom:1.11.801')
implementation 'com.amazonaws:aws-java-sdk-codeartifact'
}
Es ist in Ordnung, wenn Sie das folgende `hier
`durch den Profilnamen ersetzen
setAuthorizationToken(owner, "Hier")//← Profilname
Wenn es s3 ist, ist es nicht erforderlich, es mit Buildscript aus (`lib \ plugins \ aws-java-sdk-s3-1.11.xxx.jar```) im Wrapper von gradle abzurufen. Da das Buildscript aws-java-sdk-codeartifact zunächst nicht geschlossen werden kann, kann es nicht mit nur vollständigem CodeArtifact eigenständig erstellt werden. Ich kann es nach dem lokalen Caching tun, aber ... In der von AWS verwalteten Richtlinie gab es noch keine AWSCodeArtifactReadOnlyAccess-Funktion. (Kannst du es in Zukunft tun? Beachten Sie, dass CodeArtifact nicht ausreicht und
`sts: GetServiceBearerToken``` ebenfalls erforderlich ist!
Recommended Posts