Gradle plugin which authenticates against AWS CodeArtifact using your local credentials to obtain the token.
The plugin automatically detects any Maven repository whose URL matches a CodeArtifact endpoint and injects the appropriate credentials — no extra configuration needed.
The plugin can be applied to either your project's build.gradle(.kts) file or to your settings.gradle(.kts) file.
Apply the plugin to your build.gradle.kts (Kotlin DSL) or build.gradle (Groovy DSL) to automatically configure repositories in thatproject.
In your build.gradle.kts file:
plugins {
id("ai.clarity.codeartifact") version "0.1.1"
}
repositories {
maven {
url = uri("https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/")
}
}In your build.gradle.kts file:
plugins {
id("ai.clarity.codeartifact") version "0.1.1"
}
publishing {
repositories {
maven {
url = uri("https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/")
}
}
}In your build.gradle file:
plugins {
id 'ai.clarity.codeartifact' version '0.1.1'
}
repositories {
maven {
url 'https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/'
}
}In your build.gradle file:
plugins {
id 'ai.clarity.codeartifact' version '0.1.1'
}
publishing {
repositories {
maven {
url 'https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/'
}
}
}Instead of relying on automatic detection via maven { url ... }, you can use the codeartifact() helper method
directly on the repositories block. This method accepts the repository URL, an optional profile name, and an optional
configuration closure/action.
Note: The
Explicit codeartifact methodcan only be used inside thebuild.gradleorbuild.gradle.ktsfiles.
repositories {
codeartifact("https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/")
// With a specific profile:
codeartifact("https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/", "prod")
// With a specific profile and additional repository configuration:
codeartifact("https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/", "prod") {
name = "myCodeArtifactRepo"
}
}repositories {
codeartifact('https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/')
// With a specific profile:
codeartifact('https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/', 'prod')
// With a specific profile and additional repository configuration:
codeartifact('https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/', 'prod') {
name = 'myCodeArtifactRepo'
}
}Applying the plugin in settings.gradle.kts or settings.gradle allows you to centralize repository configuration for all projects in the
build, including pluginManagement and dependencyResolutionManagement.
Note: The
codeartifacthelper method is NOT available insettings.gradle(.kts). You must use the standardmaven { url ... }approach for automatic detection instead.
In your settings.gradle.kts file:
plugins {
id("ai.clarity.codeartifact") version "0.1.1"
}
dependencyResolutionManagement {
repositories {
maven {
url = uri("https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/")
}
}
}In your settings.gradle.kts file:
plugins {
id("ai.clarity.codeartifact") version "0.1.1"
}
pluginManagement {
repositories {
maven {
url = uri("https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/")
}
}
}In your settings.gradle file:
plugins {
id 'ai.clarity.codeartifact' version '0.1.1'
}
dependencyResolutionManagement {
repositories {
maven {
url 'https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/'
}
}
}In your settings.gradle file:
plugins {
id 'ai.clarity.codeartifact' version '0.1.1'
}
pluginManagement {
repositories {
maven {
url 'https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/'
}
}
}If you need a concrete profile for AWS authentication, you have 4 different options:
repositories {
maven {
url = uri("https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/?profile=prod")
}
}repositories {
maven {
url 'https://domain-id.d.codeartifact.eu-central-1.amazonaws.com/maven/repository/?profile=prod'
}
}Note: The query param is used to configure the profile and is automatically removed from the URL in any request to AWS.
This plugin uses the AWS SDK for authorization, all the standard environment variables are applicable.
If you need a different profile for CodeArtifact than for the rest of your AWS calls you can use this environment variable.
If you need a different profile for CodeArtifact and you cannot define an environment variable, you can define it via a system property.
Using the gradle.properties file:
systemProp.codeartifact.profile=<your profile>Or using the command line:
gradle -Dcodeartifact.profile=<your profile> ...The profile is resolved in the following order of precedence:
?profile=query parameter in the repository URLcodeartifact.profileJava system propertyCODEARTIFACT_PROFILEenvironment variableAWS_PROFILEenvironment variable (handled by the AWS SDK)- Falls back to
default
This project is licensed under the Apache License 2.0.