diff --git a/.brazil.json b/.brazil.json index 16c8ee6367e..e1a4ab8c75e 100644 --- a/.brazil.json +++ b/.brazil.json @@ -1,11 +1,14 @@ { "dependencies": { + "org.jetbrains.kotlin:kotlin-gradle-plugin:2.*": "KotlinGradlePlugin-2.x", "org.jetbrains.kotlin:kotlin-stdlib-common:2.*.*": "KotlinStdlibCommon-2.x", "org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.*.*": "KotlinStdlibJdk8-2.x", "org.jetbrains.kotlin:kotlin-stdlib:2.*.*": "KotlinStdlib-2.x", "org.jetbrains.kotlinx:atomicfu:0.*.*": "Atomicfu-0.x", "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.*": "KotlinxCoroutinesCoreJvm-1.x", - "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.*": "KotlinxCoroutinesJdk8-1.x" + "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.*": "KotlinxCoroutinesJdk8-1.x", + "com.google.devtools.ksp:symbol-processing-api:2.*": "Maven-com-google-devtools-ksp_symbol-processing-api-2.x", + "com.google.devtools.ksp:symbol-processing-gradle-plugin:2.*": "Maven-com-google-devtools-ksp_symbol-processing-gradle-plugin-2.x" }, "packageHandlingRules": { "versioning": { @@ -13,7 +16,6 @@ }, "ignore": [ "aws.sdk.kotlin:bom", - "aws.sdk.kotlin.crt:aws-crt-kotlin-android", "aws.sdk.kotlin:testing", "aws.sdk.kotlin:version-catalog" ], diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 43bea93f6cd..6dc11a85012 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ ksp-version = "2.0.10-1.0.24" # Keep in sync with kotlin-version dokka-version = "1.9.10" -aws-kotlin-repo-tools-version = "0.4.10" +aws-kotlin-repo-tools-version = "0.4.11" # libs coroutines-version = "1.9.0" diff --git a/hll/build.gradle.kts b/hll/build.gradle.kts index 0320cb919f7..257a2d7f9a0 100644 --- a/hll/build.gradle.kts +++ b/hll/build.gradle.kts @@ -5,6 +5,8 @@ import aws.sdk.kotlin.gradle.dsl.configurePublishing import aws.sdk.kotlin.gradle.kmp.* +import aws.smithy.kotlin.runtime.InternalApi +import aws.smithy.kotlin.runtime.text.ensureSuffix import org.jetbrains.kotlin.gradle.dsl.JvmTarget description = "High-level libraries for the AWS SDK for Kotlin" @@ -31,22 +33,32 @@ val optinAnnotations = listOf( "kotlin.RequiresOptIn", ) +@OptIn(InternalApi::class) +val hllPreviewVersion = if (sdkVersion.contains("-SNAPSHOT")) { // e.g. 1.3.29-beta-SNAPSHOT + sdkVersion + .removeSuffix("-SNAPSHOT") + .ensureSuffix("-beta-SNAPSHOT") +} else { + sdkVersion.ensureSuffix("-beta") // e.g. 1.3.29-beta +} + +subprojects { + group = "aws.sdk.kotlin" + version = hllPreviewVersion + configurePublishing("aws-sdk-kotlin") +} + subprojects { if (!needsKmpConfigured) { return@subprojects } - group = "aws.sdk.kotlin" - version = sdkVersion - apply { plugin("org.jetbrains.kotlin.multiplatform") plugin("org.jetbrains.dokka") plugin(libraries.plugins.aws.kotlin.repo.tools.kmp.get().pluginId) } - configurePublishing("aws-sdk-kotlin") - kotlin { explicitApi() @@ -94,7 +106,6 @@ apiValidation { ignoredProjects += listOf( "hll-codegen", - "dynamodb-mapper-annotation-processor-test", "dynamodb-mapper-codegen", "dynamodb-mapper-ops-codegen", "dynamodb-mapper-schema-codegen", diff --git a/hll/dynamodb-mapper/dynamodb-mapper-codegen/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-codegen/build.gradle.kts index 5cb39317203..9f9b36de346 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-codegen/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-codegen/build.gradle.kts @@ -30,10 +30,6 @@ kotlin { } } -val sdkVersion: String by project -group = "aws.sdk.kotlin" -version = sdkVersion - val sourcesJar by tasks.creating(Jar::class) { group = "publishing" description = "Assembles Kotlin sources jar" diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/build.gradle.kts index 304e00623b8..6f68b7979f1 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-codegen/build.gradle.kts @@ -49,10 +49,6 @@ tasks.test { } } -val sdkVersion: String by project -group = "aws.sdk.kotlin" -version = sdkVersion - val sourcesJar by tasks.creating(Jar::class) { group = "publishing" description = "Assembles Kotlin sources jar" diff --git a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts index 7cf14225da4..7102d649fa9 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper-schema-generator-plugin/build.gradle.kts @@ -1,3 +1,5 @@ +import aws.smithy.kotlin.runtime.InternalApi +import aws.smithy.kotlin.runtime.text.ensureSuffix import org.jetbrains.kotlin.gradle.tasks.KotlinCompile /* @@ -45,10 +47,6 @@ gradlePlugin { } } -val sdkVersion: String by project -group = "aws.sdk.kotlin" -version = sdkVersion - publishing { publications { create("dynamodb-mapper-schema-generator-plugin") { @@ -57,6 +55,27 @@ publishing { } } +/** + * The `java-gradle-plugin` plugin creates a javadoc jar by default, conflicting with the empty javadoc jar (emptyJar) + * created in aws-kotlin-repo-tools. Configure dependencies and disable the emptyJar task to avoid conflicts. + */ +afterEvaluate { + tasks.withType { + dependsOn(tasks.named("javadocJar")) + } + + tasks.named("publishDynamodb-mapper-schema-generatorPluginMarkerMavenPublicationToMavenLocal") { + dependsOn(tasks.named("javadocJar")) + } + + tasks.findByName("signDynamodb-mapper-schema-generatorPluginMarkerMavenPublication") + ?.dependsOn(tasks.named("javadocJar")) + + tasks.named("emptyJar") { + enabled = false + } +} + tasks.test { useJUnitPlatform() testLogging { @@ -69,6 +88,17 @@ tasks.test { } // FIXME Commonize the following functions into the aws-kotlin-repo-tools build-support +val sdkVersion: String by project + +@OptIn(InternalApi::class) +val hllPreviewVersion = if (sdkVersion.contains("-SNAPSHOT")) { // e.g. 1.3.29-beta-SNAPSHOT + sdkVersion + .removeSuffix("-SNAPSHOT") + .ensureSuffix("-beta-SNAPSHOT") +} else { + sdkVersion.ensureSuffix("-beta") // e.g. 1.3.29-beta +} + /** * Create a file containing the sdkVersion to use as a resource * This saves us from having to manually change version numbers in multiple places @@ -81,7 +111,7 @@ val generateSdkVersionFile by tasks.registering { outputs.file(versionFile) sourceSets.main.get().output.dir(resourcesDir) doLast { - versionFile.writeText(sdkVersion) + versionFile.writeText(hllPreviewVersion) } } diff --git a/hll/dynamodb-mapper/dynamodb-mapper/build.gradle.kts b/hll/dynamodb-mapper/dynamodb-mapper/build.gradle.kts index 67b92e3bb81..45b2496b5f4 100644 --- a/hll/dynamodb-mapper/dynamodb-mapper/build.gradle.kts +++ b/hll/dynamodb-mapper/dynamodb-mapper/build.gradle.kts @@ -12,6 +12,10 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask import java.nio.file.Files import java.nio.file.StandardCopyOption +description = "High level DynamoDbMapper client" +extra["displayName"] = "AWS :: SDK :: Kotlin :: HLL :: DynamoDbMapper" +extra["moduleName"] = "aws.sdk.kotlin.hll.dynamodbmapper" + buildscript { dependencies { classpath(libs.ddb.local) diff --git a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts deleted file mode 100644 index c103db0235f..00000000000 --- a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/build.gradle.kts +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -plugins { - alias(libs.plugins.ksp) -} - -kotlin { - sourceSets { - commonMain { - dependencies { - implementation(project(":hll:dynamodb-mapper:dynamodb-mapper")) - implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-annotations")) - implementation(project(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen")) - } - } - } -} - -dependencies { - listOf( - "kspCommonMainMetadata", - "kspJvm", // FIXME Generating common code is hard for KSP: https://github.com/google/ksp/issues/567 - ).forEach { configuration -> add(configuration, project(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen")) } -} diff --git a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/src/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/Group.kt b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/src/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/Group.kt deleted file mode 100644 index bb3245a8cb4..00000000000 --- a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/src/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/Group.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data - -import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbItem -import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbPartitionKey - -@DynamoDbItem -public data class Group( - @DynamoDbPartitionKey val name: String, - val userIds: String, -) diff --git a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/src/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/User.kt b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/src/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/User.kt deleted file mode 100644 index 5091e426e0b..00000000000 --- a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/src/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/User.kt +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data - -import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbAttribute -import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbItem -import aws.sdk.kotlin.hll.dynamodbmapper.DynamoDbPartitionKey - -@DynamoDbItem -public data class User( - @DynamoDbPartitionKey val id: Int, - @DynamoDbAttribute("fName") val givenName: String, - @DynamoDbAttribute("lName") val surname: String, - val age: Int, -) diff --git a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt b/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt deleted file mode 100644 index e2082c04c42..00000000000 --- a/hll/dynamodb-mapper/tests/dynamodb-mapper-annotation-processor-test/common/test/aws/sdk/kotlin/hll/dynamodbmapper/tests/processor/data/UserTest.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data - -import aws.sdk.kotlin.hll.dynamodbmapper.model.itemOf -import aws.sdk.kotlin.hll.dynamodbmapper.tests.processor.data.aws.sdk.kotlin.hll.dynamodbmapper.generatedschemas.UserConverter -import aws.sdk.kotlin.services.dynamodb.model.AttributeValue -import kotlin.test.Test -import kotlin.test.assertEquals - -class UserTest { - @Test - fun testConversion() { - val user = User(123, "Steve", "Rogers", 84) - val converted = UserConverter.convertTo(user) - - assertEquals( - itemOf( - "id" to AttributeValue.N("123"), - "fName" to AttributeValue.S("Steve"), - "lName" to AttributeValue.S("Rogers"), - "age" to AttributeValue.N("84"), - ), - converted, - ) - - val unconverted = UserConverter.convertFrom(converted) - - assertEquals(user, unconverted) - } -} diff --git a/hll/hll-codegen/build.gradle.kts b/hll/hll-codegen/build.gradle.kts index 4d3aee94ed8..853bef0cedc 100644 --- a/hll/hll-codegen/build.gradle.kts +++ b/hll/hll-codegen/build.gradle.kts @@ -37,10 +37,6 @@ dependencies { testImplementation(libs.kotlin.test.junit5) } -val sdkVersion: String by project -group = "aws.sdk.kotlin" -version = sdkVersion - val sourcesJar by tasks.creating(Jar::class) { group = "publishing" description = "Assembles Kotlin sources jar" diff --git a/settings.gradle.kts b/settings.gradle.kts index 76d43ea1650..203fcef7b8d 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -75,7 +75,6 @@ if ("dynamodb".isBootstrappedService) { include(":hll:dynamodb-mapper:dynamodb-mapper-ops-codegen") include(":hll:dynamodb-mapper:dynamodb-mapper-schema-codegen") include(":hll:dynamodb-mapper:dynamodb-mapper-annotations") - include(":hll:dynamodb-mapper:tests:dynamodb-mapper-annotation-processor-test") include(":hll:dynamodb-mapper:dynamodb-mapper-schema-generator-plugin") include(":hll:dynamodb-mapper:tests:dynamodb-mapper-schema-generator-plugin-test") } else {