diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 435f4769..a68e25f9 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -4,6 +4,7 @@ dependencies { implementation(libs.kotlin.plugin) implementation(libs.ktlint.plugin) implementation(libs.maven.publish.plugin) + implementation(libs.buildconfig.plugin) // https://github.com/gradle/gradle/issues/15383#issuecomment-779893192 implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1b88d99f..e3e8684d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,6 +11,7 @@ dokka = "org.jetbrains.dokka:dokka-gradle-plugin:1.7.20" android-plugin = "com.android.tools.build:gradle:7.3.1" ktlint-plugin = "org.jlleitschuh.gradle:ktlint-gradle:11.0.0" maven-publish-plugin = "com.vanniktech:gradle-maven-publish-plugin:0.22.0" +buildconfig-plugin = "com.github.gmazzo:gradle-buildconfig-plugin:3.1.0" kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } @@ -32,3 +33,6 @@ truth = { module = "com.google.truth:truth", version.ref = "truth" } truth-java8 = { module = "com.google.truth.extensions:truth-java8-extension", version.ref = "truth" } truth-testKit = "com.autonomousapps:testkit-truth:1.1" maven-model = "org.apache.maven:maven-model:3.8.6" + +[plugins] +buildconfig = { id = "com.github.gmazzo.buildconfig", version = "3.1.0" } diff --git a/nexus/src/main/kotlin/com/vanniktech/maven/publish/nexus/Nexus.kt b/nexus/src/main/kotlin/com/vanniktech/maven/publish/nexus/Nexus.kt index a3d910c2..10f018a6 100644 --- a/nexus/src/main/kotlin/com/vanniktech/maven/publish/nexus/Nexus.kt +++ b/nexus/src/main/kotlin/com/vanniktech/maven/publish/nexus/Nexus.kt @@ -12,10 +12,12 @@ class Nexus( private val baseUrl: String, private val username: String, password: String, + userAgentName: String, + userAgentVersion: String, ) { private val service by lazy { val okHttpClient = OkHttpClient.Builder() - .addInterceptor(NexusOkHttpInterceptor(username, password)) + .addInterceptor(NexusOkHttpInterceptor(username, password, userAgentName, userAgentVersion)) .connectTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) diff --git a/nexus/src/main/kotlin/com/vanniktech/maven/publish/nexus/NexusOkHttpInterceptor.kt b/nexus/src/main/kotlin/com/vanniktech/maven/publish/nexus/NexusOkHttpInterceptor.kt index 256da708..bb2c8833 100644 --- a/nexus/src/main/kotlin/com/vanniktech/maven/publish/nexus/NexusOkHttpInterceptor.kt +++ b/nexus/src/main/kotlin/com/vanniktech/maven/publish/nexus/NexusOkHttpInterceptor.kt @@ -4,12 +4,18 @@ import okhttp3.Credentials import okhttp3.Interceptor import okhttp3.Response -internal class NexusOkHttpInterceptor(private val username: String, private val password: String) : Interceptor { +internal class NexusOkHttpInterceptor( + private val username: String, + private val password: String, + private val userAgentName: String, + private val userAgentVersion: String, +) : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val requestBuilder = chain.request().newBuilder() requestBuilder.addHeader("Accept", "application/json") // request json by default, XML is returned else requestBuilder.addHeader("Authorization", Credentials.basic(username, password)) + requestBuilder.addHeader("User-Agent", "$userAgentName/$userAgentVersion") return chain.proceed(requestBuilder.build()) } diff --git a/plugin/build.gradle.kts b/plugin/build.gradle.kts index 442f879d..51d4324c 100644 --- a/plugin/build.gradle.kts +++ b/plugin/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("shared") id("java-gradle-plugin") + alias(libs.plugins.buildconfig) } gradlePlugin { @@ -20,6 +21,12 @@ gradlePlugin { } } +buildConfig { + packageName("com.vanniktech.maven.publish") + buildConfigField("String", "NAME", "\"com.vanniktech.maven.publish\"") + buildConfigField("String", "VERSION", "\"${project.property("VERSION_NAME")}\"") +} + val integrationTestSourceSet = sourceSets.create("integrationTest") { compileClasspath += sourceSets["main"].output + configurations.testRuntimeClasspath runtimeClasspath += output + compileClasspath diff --git a/plugin/src/main/kotlin/com/vanniktech/maven/publish/sonatype/SonatypeRepositoryBuildService.kt b/plugin/src/main/kotlin/com/vanniktech/maven/publish/sonatype/SonatypeRepositoryBuildService.kt index 518b7943..08defa25 100644 --- a/plugin/src/main/kotlin/com/vanniktech/maven/publish/sonatype/SonatypeRepositoryBuildService.kt +++ b/plugin/src/main/kotlin/com/vanniktech/maven/publish/sonatype/SonatypeRepositoryBuildService.kt @@ -1,5 +1,6 @@ package com.vanniktech.maven.publish.sonatype +import com.vanniktech.maven.publish.BuildConfig import com.vanniktech.maven.publish.SonatypeHost import com.vanniktech.maven.publish.nexus.Nexus import java.io.IOException @@ -30,6 +31,8 @@ internal abstract class SonatypeRepositoryBuildService : BuildService