diff --git a/.gitignore b/.gitignore index dc7a1de4fe..f252364f0e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ ### Java *.class +# new Kotlin 2.0 state dir +.kotlin/ + # Package Files # *.jar *.war diff --git a/dokka-integration-tests/gradle/build.gradle.kts b/dokka-integration-tests/gradle/build.gradle.kts index f610852f1c..2463996ca8 100644 --- a/dokka-integration-tests/gradle/build.gradle.kts +++ b/dokka-integration-tests/gradle/build.gradle.kts @@ -137,7 +137,7 @@ testing { registerTestProjectSuite( "testTemplateProjectAndroid", "it-android-0", - jvm = JavaLanguageVersion.of(11), // AGP requires JVM 11+ + jvm = JavaLanguageVersion.of(17), // AGP requires JVM 17+ ) registerTestProjectSuite("testTemplateProjectBasic", "it-basic") registerTestProjectSuite("testTemplateProjectBasicGroovy", "it-basic-groovy") diff --git a/dokka-integration-tests/gradle/projects/it-android-0/gradle.properties b/dokka-integration-tests/gradle/projects/it-android-0/gradle.properties index 56a959ab8b..1975a9161b 100644 --- a/dokka-integration-tests/gradle/projects/it-android-0/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-android-0/gradle.properties @@ -2,6 +2,6 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 dokka_it_android_gradle_plugin_version=4.2.2 android.useAndroidX=true diff --git a/dokka-integration-tests/gradle/projects/it-basic-groovy/gradle.properties b/dokka-integration-tests/gradle/projects/it-basic-groovy/gradle.properties index 926390fbd3..34e8bde029 100644 --- a/dokka-integration-tests/gradle/projects/it-basic-groovy/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-basic-groovy/gradle.properties @@ -2,4 +2,4 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 diff --git a/dokka-integration-tests/gradle/projects/it-basic/gradle.properties b/dokka-integration-tests/gradle/projects/it-basic/gradle.properties index 926390fbd3..34e8bde029 100644 --- a/dokka-integration-tests/gradle/projects/it-basic/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-basic/gradle.properties @@ -2,4 +2,4 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 diff --git a/dokka-integration-tests/gradle/projects/it-collector-0/gradle.properties b/dokka-integration-tests/gradle/projects/it-collector-0/gradle.properties index 926390fbd3..34e8bde029 100644 --- a/dokka-integration-tests/gradle/projects/it-collector-0/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-collector-0/gradle.properties @@ -2,4 +2,4 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 diff --git a/dokka-integration-tests/gradle/projects/it-configuration/gradle.properties b/dokka-integration-tests/gradle/projects/it-configuration/gradle.properties index 5ba6ca4d7c..481037b589 100644 --- a/dokka-integration-tests/gradle/projects/it-configuration/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-configuration/gradle.properties @@ -2,6 +2,6 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 fail_on_warning=false report_undocumented=false diff --git a/dokka-integration-tests/gradle/projects/it-js-ir-0/gradle.properties b/dokka-integration-tests/gradle/projects/it-js-ir-0/gradle.properties index eb44960a84..293d865214 100644 --- a/dokka-integration-tests/gradle/projects/it-js-ir-0/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-js-ir-0/gradle.properties @@ -2,5 +2,5 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 react_version=18.2.0-pre.467 diff --git a/dokka-integration-tests/gradle/projects/it-multimodule-0/gradle.properties b/dokka-integration-tests/gradle/projects/it-multimodule-0/gradle.properties index 926390fbd3..34e8bde029 100644 --- a/dokka-integration-tests/gradle/projects/it-multimodule-0/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-multimodule-0/gradle.properties @@ -2,4 +2,4 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 diff --git a/dokka-integration-tests/gradle/projects/it-multimodule-1/gradle.properties b/dokka-integration-tests/gradle/projects/it-multimodule-1/gradle.properties index 926390fbd3..34e8bde029 100644 --- a/dokka-integration-tests/gradle/projects/it-multimodule-1/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-multimodule-1/gradle.properties @@ -2,4 +2,4 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 diff --git a/dokka-integration-tests/gradle/projects/it-multimodule-versioning-0/gradle.properties b/dokka-integration-tests/gradle/projects/it-multimodule-versioning-0/gradle.properties index a3f3650c63..46acc11778 100644 --- a/dokka-integration-tests/gradle/projects/it-multimodule-versioning-0/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-multimodule-versioning-0/gradle.properties @@ -2,5 +2,5 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 diff --git a/dokka-integration-tests/gradle/projects/it-multiplatform-0/gradle.properties b/dokka-integration-tests/gradle/projects/it-multiplatform-0/gradle.properties index 926390fbd3..34e8bde029 100644 --- a/dokka-integration-tests/gradle/projects/it-multiplatform-0/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-multiplatform-0/gradle.properties @@ -2,4 +2,4 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 diff --git a/dokka-integration-tests/gradle/projects/it-sequential-tasks-execution-stress/gradle.properties b/dokka-integration-tests/gradle/projects/it-sequential-tasks-execution-stress/gradle.properties index e227d3f8d2..16ba13b9c3 100644 --- a/dokka-integration-tests/gradle/projects/it-sequential-tasks-execution-stress/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-sequential-tasks-execution-stress/gradle.properties @@ -2,5 +2,5 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 task_number=100 diff --git a/dokka-integration-tests/gradle/projects/it-wasm-js-wasi-basic/gradle.properties b/dokka-integration-tests/gradle/projects/it-wasm-js-wasi-basic/gradle.properties index 926390fbd3..34e8bde029 100644 --- a/dokka-integration-tests/gradle/projects/it-wasm-js-wasi-basic/gradle.properties +++ b/dokka-integration-tests/gradle/projects/it-wasm-js-wasi-basic/gradle.properties @@ -2,4 +2,4 @@ # Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. # -dokka_it_kotlin_version=1.9.22 +dokka_it_kotlin_version=2.0.0-RC1 diff --git a/dokka-integration-tests/gradle/projects/template.settings.gradle.kts b/dokka-integration-tests/gradle/projects/template.settings.gradle.kts index d6d397df1f..a96b7b9138 100644 --- a/dokka-integration-tests/gradle/projects/template.settings.gradle.kts +++ b/dokka-integration-tests/gradle/projects/template.settings.gradle.kts @@ -86,33 +86,30 @@ dependencyResolutionManagement { } // Declare Kotlin/Native dependencies - workaround for https://youtrack.jetbrains.com/issue/KT-51379 - exclusiveContent { - forRepository { - ivy("https://download.jetbrains.com/kotlin/native/builds") { - name = "Kotlin Native" - patternLayout { + // Remove this repo when the only supported KGP version is above 2.0.0 + ivy("https://download.jetbrains.com/kotlin/native/builds") { + name = "Kotlin Native" + patternLayout { - // example download URLs: - // https://download.jetbrains.com/kotlin/native/builds/releases/1.7.20/linux-x86_64/kotlin-native-prebuilt-linux-x86_64-1.7.20.tar.gz - // https://download.jetbrains.com/kotlin/native/builds/releases/1.7.20/windows-x86_64/kotlin-native-prebuilt-windows-x86_64-1.7.20.zip - // https://download.jetbrains.com/kotlin/native/builds/releases/1.7.20/macos-x86_64/kotlin-native-prebuilt-macos-x86_64-1.7.20.tar.gz - listOf( - "macos-x86_64", - "macos-aarch64", - "osx-x86_64", - "osx-aarch64", - "linux-x86_64", - "windows-x86_64" - ).forEach { os -> - listOf("dev", "releases").forEach { stage -> - artifact("$stage/[revision]/$os/[artifact]-[revision].[ext]") - } - } + // example download URLs: + // https://download.jetbrains.com/kotlin/native/builds/releases/1.7.20/linux-x86_64/kotlin-native-prebuilt-linux-x86_64-1.7.20.tar.gz + // https://download.jetbrains.com/kotlin/native/builds/releases/1.7.20/windows-x86_64/kotlin-native-prebuilt-windows-x86_64-1.7.20.zip + // https://download.jetbrains.com/kotlin/native/builds/releases/1.7.20/macos-x86_64/kotlin-native-prebuilt-macos-x86_64-1.7.20.tar.gz + listOf( + "macos-x86_64", + "macos-aarch64", + "osx-x86_64", + "osx-aarch64", + "linux-x86_64", + "windows-x86_64" + ).forEach { os -> + listOf("dev", "releases").forEach { stage -> + artifact("$stage/[revision]/$os/[artifact]-[revision].[ext]") } - metadataSources { artifact() } } } - filter { includeModuleByRegex(".*", ".*kotlin-native-prebuilt.*") } + metadataSources { artifact() } + content { includeModuleByRegex(".*", ".*kotlin-native-prebuilt.*") } } } } diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/AbstractGradleIntegrationTest.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/AbstractGradleIntegrationTest.kt index ac96911732..7e1793b482 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/AbstractGradleIntegrationTest.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/AbstractGradleIntegrationTest.kt @@ -41,6 +41,24 @@ abstract class AbstractGradleIntegrationTest : AbstractIntegrationTest() { vararg arguments: String, jvmArgs: List = listOf("-Xmx2G", "-XX:MaxMetaspaceSize=1G") ): GradleRunner { + + // TODO quick hack to add `android { namespace }` on AGP 7+ (it's mandatory in 8+). + // This hack could be made prettier, or only test AGP 7+ + val androidMajorVersion = buildVersions.androidGradlePluginVersion + ?.substringBefore(".") + ?.toIntOrNull() ?: 0 + if (androidMajorVersion >= 7) { + projectDir.resolve("build.gradle.kts").appendText( + """ + | + |android { + | namespace = "org.jetbrains.dokka.it.android" + |} + | + """.trimMargin() + ) + } + return GradleRunner.create() .withProjectDir(projectDir) .forwardOutput() diff --git a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/TestedVersions.kt b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/TestedVersions.kt index 15c72138e3..cb185cf96f 100644 --- a/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/TestedVersions.kt +++ b/dokka-integration-tests/gradle/src/main/kotlin/org/jetbrains/dokka/it/gradle/TestedVersions.kt @@ -14,7 +14,7 @@ open class AllSupportedTestedVersionsArgumentsProvider : TestedVersionsArguments object TestedVersions { - val LATEST = BuildVersions("7.6.2", "1.9.22") + val LATEST = BuildVersions("8.7", "2.0.0-RC1") /** * All supported Gradle/Kotlin versions, including [LATEST] @@ -24,7 +24,7 @@ object TestedVersions { val ALL_SUPPORTED = BuildVersions.permutations( gradleVersions = listOf("7.6.2"), - kotlinVersions = listOf("1.9.10", "1.8.20", "1.7.20", "1.6.21", "1.5.31"), + kotlinVersions = listOf("1.9.23", "1.8.20", "1.7.20", "1.6.21", "1.5.31"), ) + BuildVersions.permutations( gradleVersions = listOf(*ifExhaustive("7.0", "6.1.1")), kotlinVersions = listOf(*ifExhaustive( "1.8.0", "1.7.0", "1.6.0", "1.5.0")) @@ -40,6 +40,10 @@ object TestedVersions { */ val ANDROID = BuildVersions.permutations( + gradleVersions = listOf("8.4"), + kotlinVersions = listOf("2.0.0-RC1"), + androidGradlePluginVersions = listOf("8.3.0") + ) + BuildVersions.permutations( gradleVersions = listOf("7.4.2", *ifExhaustive("7.0")), kotlinVersions = listOf("1.7.20", "1.6.21", "1.5.31", "1.4.32"), androidGradlePluginVersions = listOf("7.2.0") @@ -47,7 +51,7 @@ object TestedVersions { gradleVersions = listOf("6.9", *ifExhaustive("6.1.1", "5.6.4")), kotlinVersions = listOf("1.8.0", "1.7.0", "1.6.0", "1.5.0", "1.4.0"), androidGradlePluginVersions = listOf("4.0.0", *ifExhaustive("3.6.3")) - ) + LATEST + ) // https://mvnrepository.com/artifact/org.jetbrains.kotlin-wrappers/kotlin-react val KT_REACT_WRAPPER_MAPPING = mapOf( @@ -61,8 +65,8 @@ object TestedVersions { "1.8.20" to "18.2.0-pre.546", "1.9.0" to "18.2.0-pre.597", "1.9.10" to "18.2.0-pre.597", - "1.9.20" to "18.2.0-pre.635", - "1.9.22" to "18.2.0-pre.682", + "1.9.23" to "18.2.0-pre.682", + "2.0.0-RC1" to "18.2.0-pre.726", ) } diff --git a/dokka-integration-tests/gradle/src/testTemplateProjectTasksExecutionStress/kotlin/SequentialTasksExecutionStressTest.kt b/dokka-integration-tests/gradle/src/testTemplateProjectTasksExecutionStress/kotlin/SequentialTasksExecutionStressTest.kt index 4d873af25a..88ae4351ae 100644 --- a/dokka-integration-tests/gradle/src/testTemplateProjectTasksExecutionStress/kotlin/SequentialTasksExecutionStressTest.kt +++ b/dokka-integration-tests/gradle/src/testTemplateProjectTasksExecutionStress/kotlin/SequentialTasksExecutionStressTest.kt @@ -29,7 +29,7 @@ class SequentialTasksExecutionStressTest : AbstractGradleIntegrationTest() { "--info", "--stacktrace", "-Ptask_number=100", - jvmArgs = listOf("-Xmx1G", "-XX:MaxMetaspaceSize=400m") + jvmArgs = listOf("-Xmx1G", "-XX:MaxMetaspaceSize=500m") ).buildRelaxed() assertEquals(TaskOutcome.SUCCESS, assertNotNull(result.task(":runTasks")).outcome) diff --git a/dokka-integration-tests/maven/projects/it-maven/pom.xml b/dokka-integration-tests/maven/projects/it-maven/pom.xml index 43ae4889fa..457ca5d9b5 100644 --- a/dokka-integration-tests/maven/projects/it-maven/pom.xml +++ b/dokka-integration-tests/maven/projects/it-maven/pom.xml @@ -11,7 +11,7 @@ 1.0-SNAPSHOT - 1.9.22 + 2.0.0-RC1 diff --git a/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/KotlinNativeDistributionAccessor.kt b/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/KotlinNativeDistributionAccessor.kt index 4bb42eb826..e1878d4c84 100644 --- a/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/KotlinNativeDistributionAccessor.kt +++ b/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/KotlinNativeDistributionAccessor.kt @@ -5,13 +5,13 @@ @file:Suppress("INVISIBLE_REFERENCE") package org.jetbrains.dokka.gradle.kotlin -import java.io.File import org.gradle.api.Project import org.jetbrains.kotlin.commonizer.KonanDistribution import org.jetbrains.kotlin.commonizer.platformLibsDir import org.jetbrains.kotlin.commonizer.stdlib -import org.jetbrains.kotlin.compilerRunner.konanHome +import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader import org.jetbrains.kotlin.konan.target.KonanTarget +import java.io.File /** * Provides access to the Kotlin/Native distribution components: @@ -27,12 +27,23 @@ internal class KotlinNativeDistributionAccessor( project: Project ) { private val konanDistribution = KonanDistribution( - @Suppress("INVISIBLE_MEMBER") - project.konanHome + // see this comment for the explanation of what's happening: + // https://github.com/Kotlin/dokka/pull/3516#issuecomment-1992141380 + Class.forName("org.jetbrains.kotlin.compilerRunner.NativeToolRunnersKt") + .declaredMethods + .find { it.name == "getKonanHome" && it.returnType.simpleName == "String" } + ?.invoke(null, project) as? String + ?: project.alternativeKonanHome() + ?: error("Unable to find the Kotlin Native home") ) val stdlibDir: File = konanDistribution.stdlib + private fun Project.alternativeKonanHome(): String? { + val nativeHome = this.findProperty("org.jetbrains.kotlin.native.home") as? String ?: return null + return File(nativeHome).absolutePath ?: NativeCompilerDownloader(project).compilerDirectory.absolutePath + } + fun platformDependencies(target: KonanTarget): List = konanDistribution .platformLibsDir .resolve(target.name) diff --git a/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/isMainSourceSet.kt b/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/isMainSourceSet.kt index 9be1e372b8..99dd497b47 100644 --- a/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/isMainSourceSet.kt +++ b/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/isMainSourceSet.kt @@ -4,8 +4,6 @@ package org.jetbrains.dokka.gradle.kotlin -import com.android.build.gradle.api.ApplicationVariant -import com.android.build.gradle.api.LibraryVariant import org.gradle.api.Project import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation @@ -22,7 +20,9 @@ private fun isMainCompilation(compilation: KotlinCompilation): Boolean { try { val androidVariant = compilation.run { this as? KotlinJvmAndroidCompilation }?.androidVariant if (androidVariant != null) { - return androidVariant is LibraryVariant || androidVariant is ApplicationVariant + @Suppress("DEPRECATION") + return androidVariant is com.android.build.gradle.api.LibraryVariant + || androidVariant is com.android.build.gradle.api.ApplicationVariant } } catch (e: NoSuchMethodError) { // Kotlin Plugin version below 1.4 diff --git a/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt b/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt index 0ff4ee20f5..da856a88f6 100644 --- a/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt +++ b/dokka-runners/runner-gradle-plugin-classic/src/main/kotlin/org/jetbrains/dokka/gradle/kotlin/kotlinClasspathUtils.kt @@ -53,9 +53,12 @@ private fun KotlinCompilation.newCompileClasspathOf(project: Project): FileColle // Since Kotlin 2.0 native distributiuon dependencies will be included to compileDependencyFiles if (kgpVersion != null && kgpVersion <= KotlinGradlePluginVersion(1, 9, 255)) { if (this is AbstractKotlinNativeCompilation) { - val kotlinNativeDistributionAccessor = KotlinNativeDistributionAccessor(project) - result.from(kotlinNativeDistributionAccessor.stdlibDir) - result.from(kotlinNativeDistributionAccessor.platformDependencies(konanTarget)) + val excludePlatformFiles = project.classpathProperty("excludeKonanPlatformDependencyFiles", default = false) + if (!excludePlatformFiles) { + val kotlinNativeDistributionAccessor = KotlinNativeDistributionAccessor(project) + result.from(kotlinNativeDistributionAccessor.stdlibDir) + result.from(kotlinNativeDistributionAccessor.platformDependencies(konanTarget)) + } } } diff --git a/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/AndroidAutoConfigurationTest.kt b/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/AndroidAutoConfigurationTest.kt index c5c7bbb1f2..293d459518 100644 --- a/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/AndroidAutoConfigurationTest.kt +++ b/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/AndroidAutoConfigurationTest.kt @@ -10,36 +10,45 @@ import org.gradle.api.internal.project.ProjectInternal import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.withType import org.gradle.testfixtures.ProjectBuilder +import org.jetbrains.dokka.gradle.utils.isAgpRunnable import kotlin.test.* class AndroidAutoConfigurationTest { private val project = ProjectBuilder.builder().build().also { project -> - project.plugins.apply("com.android.library") - project.plugins.apply("org.jetbrains.kotlin.android") - project.plugins.apply("org.jetbrains.dokka") - project.extensions.configure { - compileSdkVersion(28) + if (isAgpRunnable()) { + project.plugins.apply("com.android.library") + project.plugins.apply("org.jetbrains.kotlin.android") + project.plugins.apply("org.jetbrains.dokka") + project.extensions.configure { + compileSdk = 28 + } } } @Test fun `at least one dokka task created`() { + if (!isAgpRunnable()) return + val dokkaTasks = project.tasks.withType().toList() assertTrue(dokkaTasks.isNotEmpty(), "Expected at least one dokka task") } @Test fun `all default source sets are present in dokka`() { + if (!isAgpRunnable()) return + val dokkaTasks = project.tasks.withType().toList() dokkaTasks.forEach { task -> - val sourceSets = task.dokkaSourceSets.toList() + val sourceSets = task.dokkaSourceSets.map { it.name }.toSet() assertEquals( - listOf( - "androidTest", "androidTestDebug", "debug", "main", - "release", "test", "testDebug", "testRelease", "androidTestRelease" - ).sorted(), - sourceSets.map { it.name }.sorted(), + setOf( + "main", "debug", "release", + "test", "testDebug", "testRelease", + "androidTest", "androidTestDebug", "androidTestRelease", + "testFixtures", "testFixturesDebug", "testFixturesRelease" + ), + sourceSets, "Expected all default source sets being registered" ) } diff --git a/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilderTest.kt b/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilderTest.kt index 573b416996..1362d56d66 100644 --- a/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilderTest.kt +++ b/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilderTest.kt @@ -9,6 +9,7 @@ import org.gradle.api.Project import org.gradle.kotlin.dsl.closureOf import org.gradle.testfixtures.ProjectBuilder import org.jetbrains.dokka.* +import org.jetbrains.dokka.gradle.utils.isAgpRunnable import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet import java.net.URI import kotlin.test.* @@ -398,6 +399,8 @@ class GradleDokkaSourceSetBuilderTest { @Test fun noAndroidSdkLink() { + if (!isAgpRunnable()) return + val sourceSet = GradleDokkaSourceSetBuilder("", project) assertFalse(sourceSet.noAndroidSdkLink.get(), "Expected 'noAndroidSdkLink' to be set to false by default") diff --git a/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/utils/AgpUtils.kt b/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/utils/AgpUtils.kt new file mode 100644 index 0000000000..5cdb66e359 --- /dev/null +++ b/dokka-runners/runner-gradle-plugin-classic/src/test/kotlin/org/jetbrains/dokka/gradle/utils/AgpUtils.kt @@ -0,0 +1,18 @@ +/* + * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package org.jetbrains.dokka.gradle.utils + +/** + * AGP 7+ is compiled with Java 8, but requires Java 11+ to run: + * + * > EvalIssueException: Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. + */ +fun isAgpRunnable(): Boolean { + val javaVersion = when (val specVersion = System.getProperty("java.specification.version")) { + "1.8" -> 8 + else -> specVersion.toInt() + } + return javaVersion >= 11 +} diff --git a/dokka-subprojects/analysis-kotlin-descriptors-ide/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ide/DokkaResolutionFacade.kt b/dokka-subprojects/analysis-kotlin-descriptors-ide/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ide/DokkaResolutionFacade.kt index c37ed9ff9a..3b82d80bf9 100644 --- a/dokka-subprojects/analysis-kotlin-descriptors-ide/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ide/DokkaResolutionFacade.kt +++ b/dokka-subprojects/analysis-kotlin-descriptors-ide/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/descriptors/ide/DokkaResolutionFacade.kt @@ -87,6 +87,10 @@ internal class DokkaResolutionFacade( } } + override fun getProject(): Project? { + throw UnsupportedOperationException() + } + override fun getDiagnostics(): Diagnostics { throw UnsupportedOperationException() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 81baa14cbd..cfed2b1d94 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,12 +1,9 @@ [versions] -gradlePlugin-kotlin = "1.9.22" +gradlePlugin-kotlin = "2.0.0-RC1" # See: https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin -gradlePlugin-android = "4.2.2" -gradlePlugin-android-dokkatoo = "8.0.2" +gradlePlugin-android = "7.1.3" gradlePlugin-dokka = "1.9.20" -gradlePlugin-gradle-customUserData = "1.13" -gradlePlugin-gradle-enterprise = "3.16.2" kotlinx-coroutines = "1.7.3" kotlinx-collections-immutable = "0.3.6" @@ -14,14 +11,14 @@ kotlinx-serialization = "1.6.0" kotlinx-bcv = "0.13.2" ## Analysis -kotlin-compiler = "1.9.22" +kotlin-compiler = "2.0.0-RC1" kotlin-compiler-k2 = "2.0.20-dev-7" # MUST match the version of the intellij platform used in the kotlin compiler, # otherwise this will lead to different versions of psi API and implementations # on the classpath and will fail with hard to debug problems in runtime. # See: https://github.com/JetBrains/kotlin/blob/e6633d3d9214402fcf3585ae8c24213a4761cc8b/gradle/versions.properties#L1 -intellij-platform = "213.7172.25" +intellij-platform = "213.7172.53" ## HTML jsoup = "1.16.1" @@ -58,6 +55,10 @@ gradlePlugin-shadow = "8.1.1" gradlePlugin-gradlePluginPublish = "1.2.1" gradlePlugin-gradleNode = "7.0.1" +## Gradle enterprise +gradlePlugin-gradle-customUserData = "1.13" +gradlePlugin-gradle-enterprise = "3.16.2" + ## Test junit = "5.9.3" kotest = "5.6.2" @@ -71,19 +72,11 @@ kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collec kotlinx-serialization-bom = { module = "org.jetbrains.kotlinx:kotlinx-serialization-bom", version.ref = "kotlinx-serialization" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json" } -#### Dokka #### -# TODO [structure-refactoring] Needed for Dokkatoo only, needs to be removed. -dokka-core = { module = "org.jetbrains.dokka:dokka-core", version.ref = "gradlePlugin-dokka" } -dokka-allModulesPagePlugin = { module = "org.jetbrains.dokka:all-modules-page-plugin", version.ref = "gradlePlugin-dokka" } -dokka-templatingPlugin = { module = "org.jetbrains.dokka:templating-plugin", version.ref = "gradlePlugin-dokka" } - #### Gradle plugins #### # The Maven coordinates of Gradle plugins that are either used in convention plugins, or in Dokka subprojects gradlePlugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "gradlePlugin-kotlin" } gradlePlugin-kotlin-klibCommonizerApi = { module = "org.jetbrains.kotlin:kotlin-klib-commonizer-api", version.ref = "gradlePlugin-kotlin" } gradlePlugin-android = { module = "com.android.tools.build:gradle", version.ref = "gradlePlugin-android" } -gradlePlugin-android-dokkatoo = { module = "com.android.tools.build:gradle", version.ref = "gradlePlugin-android-dokkatoo" } -gradlePlugin-androidApi-dokkatoo = { module = "com.android.tools.build:gradle-api", version.ref = "gradlePlugin-android-dokkatoo" } gradlePlugin-dokka = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "gradlePlugin-dokka" } gradlePlugin-shadow = { module = "com.github.johnrengelman:shadow", version.ref = "gradlePlugin-shadow" } gradlePlugin-gradlePublish = { module = "com.gradle.publish:plugin-publish-plugin", version.ref = "gradlePlugin-gradlePluginPublish" }