Migrate SubpluginsIT to new test DSL

^KT-45745 In Progress
This commit is contained in:
Yahor Berdnikau
2021-12-21 18:12:15 +01:00
parent 47ed6dcfb4
commit 1c1e8f3c85
21 changed files with 398 additions and 424 deletions
+3 -1
View File
@@ -63,6 +63,7 @@ val kotlinGradlePluginAndItsRequired = arrayOf(
":kotlin-stdlib-js", ":kotlin-stdlib-js",
":kotlin-stdlib-wasm", ":kotlin-stdlib-wasm",
":examples:annotation-processor-example", ":examples:annotation-processor-example",
":kotlin-sam-with-receiver",
":kotlin-script-runtime", ":kotlin-script-runtime",
":kotlin-scripting-common", ":kotlin-scripting-common",
":kotlin-scripting-jvm", ":kotlin-scripting-jvm",
@@ -72,7 +73,8 @@ val kotlinGradlePluginAndItsRequired = arrayOf(
":kotlin-test-js-runner", ":kotlin-test-js-runner",
":native:kotlin-klib-commonizer-embeddable", ":native:kotlin-klib-commonizer-embeddable",
":native:kotlin-klib-commonizer-api", ":native:kotlin-klib-commonizer-api",
":native:kotlin-native-utils" ":native:kotlin-native-utils",
":kotlin-lombok"
) )
fun Task.dependsOnKotlinGradlePluginInstall() { fun Task.dependsOnKotlinGradlePluginInstall() {
@@ -1,6 +1,11 @@
apply plugin: 'kotlin' import plugins.KotlinBuildPublishingPlugin
apply plugin: 'maven-publish'
apply plugin: 'jps-compatible' plugins {
id("java-gradle-plugin")
id("gradle-plugin-common-configuration")
id("com.gradle.plugin-publish")
id("jps-compatible")
}
repositories { repositories {
mavenLocal() mavenLocal()
@@ -16,7 +21,7 @@ dependencies {
// Use this dependency instead when building apart from the other modules: // Use this dependency instead when building apart from the other modules:
// compile "org.jetbrains.kotlin:kotlin-gradle-plugin-api:$kotlin_version" // compile "org.jetbrains.kotlin:kotlin-gradle-plugin-api:$kotlin_version"
api project(':kotlin-test::kotlin-test-junit') api project(':kotlin-test:kotlin-test-junit')
compileOnly kotlinStdlib() compileOnly kotlinStdlib()
compileOnly project(':compiler') compileOnly project(':compiler')
@@ -34,26 +39,40 @@ dependencies {
ArtifactsKt.runtimeJar(project, EmbeddableKt.rewriteDefaultJarDepsToShadedCompiler(project, {}), {}) ArtifactsKt.runtimeJar(project, EmbeddableKt.rewriteDefaultJarDepsToShadedCompiler(project, {}), {})
// In a standalone build, you can setup the relocation with the Shadow plugin. // In a standalone build, you can setup the relocation with the Shadow plugin.
publishing { // You should configure your own Gradle plugin publication!
publications { extensions.configure(GradlePluginDevelopmentExtension) {
main(MavenPublication) { it.setAutomatedPublishing(false)
artifact tasks.named("embeddable") }
gradlePlugin {
plugins {
create("gradle-subplugin-example") {
id = "org.jetbrains.kotlin.gradle-subplugin-example"
implementationClass = "example.ExampleSubplugin"
} }
} }
} }
tasks.register("install") { pluginBundle {
dependsOn(tasks.named("publishToMavenLocal")) plugins {
named("gradle-subplugin-example") {
id = "org.jetbrains.kotlin.gradle-subplugin-example"
displayName = "Kotlin Gradle subplugin example"
}
}
} }
// workaround for Gradle configuration cache PluginMarkersKt.publishPluginMarkers(project, true)
// TODO: remove it when https://github.com/gradle/gradle/pull/16945 merged into used in build Gradle version
tasks.withType(PublishToMavenLocal) { // Disable releasing for this plugin
def originalTask = it // It is not intended to be released publicly
def serializablePublishTask = tasks.withType(PublishToMavenRepository)
tasks.register(originalTask.name + "Serializable", PublishToMavenLocalSerializable) { .configureEach {
publication = originalTask.publication if (it.name.endsWith("PublicationTo${KotlinBuildPublishingPlugin.REPOSITORY_NAME}Repository")) {
setEnabled(false)
} }
originalTask.onlyIf { false } }
originalTask.dependsOn(serializablePublishTask)
tasks.named("publishPlugins") {
enabled = false
} }
@@ -0,0 +1,100 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle
import org.gradle.api.logging.LogLevel
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.condition.DisabledOnOs
import org.junit.jupiter.api.condition.OS
import kotlin.io.path.relativeTo
@DisabledOnOs(
OS.WINDOWS,
disabledReason = "Compiler plugin is leaking file descriptor preventing cleaning the project"
)
@DisplayName("Scripting plugin")
@OtherGradlePluginTests
class ScriptingIT : KGPBaseTest() {
@DisplayName("basic script is working")
@GradleTest
fun testScripting(gradleVersion: GradleVersion) {
project("scripting", gradleVersion) {
build("assemble", buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)) {
assertCompiledKotlinSources(
listOf(
subProject("app").kotlinSourcesDir().resolve("world.greet.kts").relativeTo(projectPath),
subProject("script-template").kotlinSourcesDir().resolve("GreetScriptTemplate.kt").relativeTo(projectPath)
),
output
)
assertFileExists(
subProject("app").kotlinClassesDir().resolve("World_greet.class")
)
}
}
}
@DisplayName("With custom file extension compiled non-incremental")
@GradleTest
fun testScriptingCustomExtensionNonIncremental(gradleVersion: GradleVersion) {
testScriptingCustomExtensionImpl(gradleVersion, withIC = false)
}
@DisplayName("With custom file extension compiled incremental")
@GradleTest
fun testScriptingCustomExtensionIncremental(gradleVersion: GradleVersion) {
testScriptingCustomExtensionImpl(gradleVersion, withIC = true)
}
private fun testScriptingCustomExtensionImpl(
gradleVersion: GradleVersion,
withIC: Boolean
) {
project(
"scriptingCustomExtension",
gradleVersion,
buildOptions = defaultBuildOptions.copy(
incremental = withIC,
logLevel = if (withIC) LogLevel.DEBUG else defaultBuildOptions.logLevel
)
) {
val appSubproject = subProject("app")
val bobGreetSource = appSubproject.kotlinSourcesDir().resolve("bob.greet")
val bobGreet = bobGreetSource.relativeTo(projectPath)
val aliceGreet = appSubproject.kotlinSourcesDir().resolve("alice.greet").relativeTo(projectPath)
val worldGreet = appSubproject.kotlinSourcesDir().resolve("world.greet").relativeTo(projectPath)
val greetScriptTemplateKt = subProject("script-template")
.kotlinSourcesDir()
.resolve("GreetScriptTemplate.kt")
.relativeTo(projectPath)
build("assemble") {
val classesDir = appSubproject.kotlinClassesDir()
assertFileExists(classesDir.resolve("World.class"))
assertFileExists(classesDir.resolve("Alice.class"))
assertFileExists(classesDir.resolve("Bob.class"))
if (withIC) {
// compile iterations are not logged when IC is disabled
assertCompiledKotlinSources(
listOf(bobGreet, aliceGreet, worldGreet, greetScriptTemplateKt),
output
)
}
}
bobGreetSource.modify { it.replace("Bob", "Uncle Bob") }
build("assemble") {
if (withIC) {
assertCompiledKotlinSources(listOf(bobGreet), output)
}
}
}
}
}
@@ -5,244 +5,191 @@
package org.jetbrains.kotlin.gradle package org.jetbrains.kotlin.gradle
import org.gradle.api.logging.configuration.WarningMode import org.gradle.api.logging.LogLevel
import org.jetbrains.kotlin.gradle.util.AGPVersion import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.gradle.util.checkBytecodeContains import org.jetbrains.kotlin.gradle.util.checkBytecodeContains
import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.test.util.JUnit4Assertions.assertTrue
import org.jetbrains.kotlin.test.util.KtTestUtil import org.junit.jupiter.api.DisplayName
import org.junit.Test import kotlin.io.path.readText
import java.io.File
import kotlin.test.assertTrue
class SubpluginsIT : BaseGradleIT() { @DisplayName("Other plugins tests")
@OtherGradlePluginTests
class SubpuginsIT : KGPBaseTest() {
override fun defaultBuildOptions(): BuildOptions { @DisplayName("Subplugin example works as expected")
return super.defaultBuildOptions().copy(warningMode = WarningMode.Summary) @GradleTest
} fun testGradleSubplugin(gradleVersion: GradleVersion) {
project("kotlinGradleSubplugin", gradleVersion) {
@Test build("compileKotlin", "build") {
fun testGradleSubplugin() {
val project = Project("kotlinGradleSubplugin")
project.build("compileKotlin", "build") {
assertSuccessful()
assertContains("ExampleSubplugin loaded")
assertContains("ExampleLegacySubplugin loaded")
assertContains("Project component registration: exampleValue")
assertContains("Project component registration: exampleLegacyValue")
assertTasksExecuted(":compileKotlin") assertTasksExecuted(":compileKotlin")
assertOutputContains("ExampleSubplugin loaded")
assertOutputContains("ExampleLegacySubplugin loaded")
assertOutputContains("Project component registration: exampleValue")
assertOutputContains("Project component registration: exampleLegacyValue")
} }
project.build("compileKotlin", "build") { build("compileKotlin", "build") {
assertSuccessful()
assertContains("ExampleSubplugin loaded")
assertContains("ExampleLegacySubplugin loaded")
assertNotContains("Project component registration: exampleValue")
assertNotContains("Project component registration: exampleLegacyValue")
assertTasksUpToDate(":compileKotlin") assertTasksUpToDate(":compileKotlin")
assertOutputContains("ExampleSubplugin loaded")
assertOutputContains("ExampleLegacySubplugin loaded")
assertOutputDoesNotContain("Project component registration: exampleValue")
assertOutputDoesNotContain("Project component registration: exampleLegacyValue")
}
} }
} }
@Test @DisplayName("Allopen plugin opens classes and methods")
fun testAllOpenPlugin() { @GradleTest
Project("allOpenSimple").build("build") { fun testAllOpenPlugin(gradleVersion: GradleVersion) {
assertSuccessful() project("allOpenSimple", gradleVersion) {
build("assemble") {
val classesDir = File(project.projectDir, kotlinClassesDir()) val classesDir = kotlinClassesDir()
val openClass = File(classesDir, "test/OpenClass.class") val openClass = classesDir.resolve("test/OpenClass.class")
val closedClass = File(classesDir, "test/ClosedClass.class") val closedClass = classesDir.resolve("test/ClosedClass.class")
assertTrue(openClass.exists()) assertFileExists(openClass)
assertTrue(closedClass.exists()) assertFileExists(closedClass)
checkBytecodeContains( checkBytecodeContains(
openClass, openClass.toFile(),
"public class test/OpenClass {", "public class test/OpenClass {",
"public method()V" "public method()V"
) )
checkBytecodeContains( checkBytecodeContains(
closedClass, closedClass.toFile(),
"public final class test/ClosedClass {", "public final class test/ClosedClass {",
"public final method()V" "public final method()V"
) )
} }
} }
}
@Test @DisplayName("Kotlin Spring plugin opens classes and methods")
fun testKotlinSpringPlugin() { @GradleTest
Project("allOpenSpring").build("build") { fun testKotlinSpringPlugin(gradleVersion: GradleVersion) {
assertSuccessful() project("allOpenSpring", gradleVersion) {
build("assemble") {
val classesDir = File(project.projectDir, kotlinClassesDir()) val classesDir = kotlinClassesDir()
val openClass = File(classesDir, "test/OpenClass.class") val openClass = classesDir.resolve("test/OpenClass.class")
val closedClass = File(classesDir, "test/ClosedClass.class") val closedClass = classesDir.resolve("test/ClosedClass.class")
assertTrue(openClass.exists())
assertTrue(closedClass.exists()) assertFileExists(openClass)
assertFileExists(closedClass)
checkBytecodeContains( checkBytecodeContains(
openClass, openClass.toFile(),
"public class test/OpenClass {", "public class test/OpenClass {",
"public method()V" "public method()V"
) )
checkBytecodeContains( checkBytecodeContains(
closedClass, closedClass.toFile(),
"public final class test/ClosedClass {", "public final class test/ClosedClass {",
"public final method()V" "public final method()V"
) )
} }
} }
}
@Test @DisplayName("Jpa plugin generates no-arg constructor")
fun testKotlinJpaPlugin() { @GradleTest
Project("noArgJpa").build("build") { fun testKotlinJpaPlugin(gradleVersion: GradleVersion) {
assertSuccessful() project("noArgJpa", gradleVersion) {
build("assemble") {
val classesDir = File(project.projectDir, kotlinClassesDir()) val classesDir = kotlinClassesDir()
fun checkClass(name: String) { fun checkClass(name: String) {
val testClass = File(classesDir, "test/$name.class") val testClass = classesDir.resolve("test/$name.class")
assertTrue(testClass.exists()) assertFileExists(testClass)
checkBytecodeContains(testClass, "public <init>()V") checkBytecodeContains(testClass.toFile(), "public <init>()V")
} }
checkClass("Test") checkClass("Test")
checkClass("Test2") checkClass("Test2")
} }
} }
}
@Test @DisplayName("NoArg: Don't invoke initializers by default")
fun testNoArgKt18668() { @GradleTest
Project("noArgKt18668").build("build") { fun testNoArgKt18668(gradleVersion: GradleVersion) {
assertSuccessful() project("noArgKt18668", gradleVersion) {
build("assemble")
} }
} }
@Test @DisplayName("sam-with-receiver works")
fun testSamWithReceiverSimple() { @GradleTest
Project("samWithReceiverSimple").build("build") { fun testSamWithReceiverSimple(gradleVersion: GradleVersion) {
assertSuccessful() project("samWithReceiverSimple", gradleVersion) {
build("assemble")
} }
} }
@Test @DisplayName("Allopen plugin works when classpath dependency is not declared in current or root project ")
fun testScripting() { @GradleTest
Project("scripting").build("build") { fun testAllOpenFromNestedBuildscript(gradleVersion: GradleVersion) {
assertSuccessful() project("allOpenFromNestedBuildscript", gradleVersion) {
assertCompiledKotlinSources( build("build") {
listOf("app/src/main/kotlin/world.greet.kts", "script-template/src/main/kotlin/GreetScriptTemplate.kt") val nestedSubproject = subProject("a/b")
) assertFileExists(nestedSubproject.kotlinClassesDir().resolve("MyClass.class"))
assertFileExists("${kotlinClassesDir("app", "main")}World_greet.class") assertFileExists(nestedSubproject.kotlinClassesDir("test").resolve("MyTestClass.class"))
}
}
@Test
fun testScriptingCustomExtensionNonIncremental() {
testScriptingCustomExtensionImpl(withIC = false)
}
@Test
fun testScriptingCustomExtensionIncremental() {
testScriptingCustomExtensionImpl(withIC = true)
}
private fun testScriptingCustomExtensionImpl(withIC: Boolean) {
val project = Project("scriptingCustomExtension")
val options = defaultBuildOptions().copy(incremental = withIC)
project.setupWorkingDir()
val bobGreet = project.projectFile("bob.greet")
val aliceGreet = project.projectFile("alice.greet")
val worldGreet = project.projectFile("world.greet")
val greetScriptTemplateKt = project.projectFile("GreetScriptTemplate.kt")
var isFailed = false
project.build("build", options = options) {
val classesDir = kotlinClassesDir("app", "main")
assertSuccessful()
assertFileExists("${classesDir}World.class")
assertFileExists("${classesDir}Alice.class")
assertFileExists("${classesDir}Bob.class")
if (withIC) {
// compile iterations are not logged when IC is disabled
assertCompiledKotlinSources(project.relativize(bobGreet, aliceGreet, worldGreet, greetScriptTemplateKt))
}
}
if (!isFailed) {
bobGreet.modify { it.replace("Bob", "Uncle Bob") }
project.build("build", options = options) {
assertSuccessful()
if (withIC) {
assertCompiledKotlinSources(project.relativize(bobGreet))
}
} }
} }
} }
@Test @DisplayName("Allopen applied from script works")
fun testAllOpenFromNestedBuildscript() { @GradleTest
Project("allOpenFromNestedBuildscript").build("build") { fun testAllopenFromScript(gradleVersion: GradleVersion) {
assertSuccessful() project("allOpenFromScript", gradleVersion) {
assertFileExists("${kotlinClassesDir(subproject = "a/b", sourceSet = "main")}MyClass.class") build("build") {
assertFileExists("${kotlinClassesDir(subproject = "a/b", sourceSet = "test")}MyTestClass.class") assertFileExists(kotlinClassesDir().resolve("MyClass.class"))
assertFileExists(kotlinClassesDir(sourceSet = "test").resolve("MyTestClass.class"))
}
} }
} }
@Test @DisplayName("KT-39809: kapt subplugin legacy loading does not fail the build")
fun testAllopenFromScript() { @GradleTest
Project("allOpenFromScript").build("build") { fun testKotlinVersionDowngradeInSupbrojectKt39809(gradleVersion: GradleVersion) {
assertSuccessful() project("kapt2/android-dagger", gradleVersion) {
assertFileExists("${kotlinClassesDir(sourceSet = "main")}MyClass.class") subProject("app").buildGradle.modify {
assertFileExists("${kotlinClassesDir(sourceSet = "test")}MyTestClass.class")
}
}
@Test
fun testKotlinVersionDowngradeInSupbrojectKt39809() = with(
Project(
"android-dagger",
directoryPrefix = "kapt2"
)
) {
setupWorkingDir()
gradleBuildScript("app").modify {
""" """
buildscript { buildscript {
repositories { repositories {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${TestVersions.Kotlin.STABLE_RELEASE}")
} }
} }
$it $it
""".trimIndent() """.trimIndent()
} }
build( build(
":app:compileDebugKotlin", ":app:compileDebugKotlin",
options = defaultBuildOptions().copy( buildOptions = defaultBuildOptions.copy(
androidGradlePluginVersion = AGPVersion.v4_2_0, androidVersion = TestVersions.AGP.AGP_42
androidHome = KtTestUtil.findAndroidSdk() )
) )
) {
assertSuccessful()
} }
} }
@Test @DisplayName("KT-39809: subplugins legacy loading does not fail the build")
fun testKotlinVersionDowngradeWithNewerSubpluginsKt39809() = with(Project("multiprojectWithDependency")) { @GradleTest
setupWorkingDir() fun testKotlinVersionDowngradeWithNewerSubpluginsKt39809(gradleVersion: GradleVersion) {
project("multiprojectWithDependency", gradleVersion) {
val subprojectBuildGradle = projectDir.resolve("projA/build.gradle") val projectA = subProject("projA")
val subprojectBuildGradle = projectA.buildGradle
val originalScript = subprojectBuildGradle.readText() val originalScript = subprojectBuildGradle.readText()
listOf("allopen", "noarg", "sam-with-receiver", "serialization").forEach { plugin -> listOf("allopen", "noarg", "sam-with-receiver", "serialization").forEach { plugin ->
projectDir.resolve("projA/build.gradle").modify { subprojectBuildGradle.modify {
""" """
buildscript { buildscript {
repositories { repositories {
@@ -250,7 +197,7 @@ class SubpluginsIT : BaseGradleIT() {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath("org.jetbrains.kotlin:kotlin-$plugin:${defaultBuildOptions().kotlinVersion}") classpath("org.jetbrains.kotlin:kotlin-$plugin:${defaultBuildOptions.kotlinVersion}")
} }
} }
@@ -259,45 +206,55 @@ class SubpluginsIT : BaseGradleIT() {
$originalScript $originalScript
""".trimIndent() """.trimIndent()
} }
build(":projA:compileKotlin", options = defaultBuildOptions().copy(kotlinVersion = "1.3.72")) {
assertFailed() buildAndFail(
assertContains( ":projA:compileKotlin",
buildOptions = defaultBuildOptions.copy(kotlinVersion = "1.3.72")
) {
assertOutputContains(
"This version of the kotlin-$plugin Gradle plugin is built for a newer Kotlin version. " + "This version of the kotlin-$plugin Gradle plugin is built for a newer Kotlin version. " +
"Please use an older version of kotlin-$plugin or upgrade the Kotlin Gradle plugin version to make them match." "Please use an older version of kotlin-$plugin or upgrade the Kotlin Gradle plugin version to make them match."
) )
} }
} }
} }
@Test
fun testLombokPlugin() {
Project("lombokProject").build("build") {
assertSuccessful()
} }
@DisplayName("Lombok plugin is working")
@GradleTest
fun testLombokPlugin(gradleVersion: GradleVersion) {
project("lombokProject", gradleVersion) {
build("build")
}
} }
@Test // KT-47921 @DisplayName("KT-47921: serialization plugin passed first to the compiler")
fun testSerializationPluginOrderedFirst() = with(Project("allOpenSimple")) { @GradleTest
setupWorkingDir() fun testSerializationPluginOrderedFirst(gradleVersion: GradleVersion) {
project("allOpenSimple", gradleVersion) {
// Ensure that there are also allopen, noarg, and serialization plugins applied: // Ensure that there are also allopen, noarg, and serialization plugins applied:
gradleBuildScript().appendText( buildGradle.modify {
""" """
buildscript { |plugins {
dependencies { | id "org.jetbrains.kotlin.plugin.noarg"
classpath("org.jetbrains.kotlin:kotlin-noarg:${defaultBuildOptions().kotlinVersion}") | id "org.jetbrains.kotlin.plugin.serialization"
classpath("org.jetbrains.kotlin:kotlin-serialization:${defaultBuildOptions().kotlinVersion}") |${it.substringAfter("plugins {")}
""".trimMargin()
} }
}
apply plugin: "org.jetbrains.kotlin.plugin.noarg"
apply plugin: "org.jetbrains.kotlin.plugin.serialization"
""".trimIndent()
)
build("compileKotlin") { build(
assertSuccessful() "compileKotlin",
val xPlugin = output.split(" ").single { it.startsWith("-Xplugin") }.substringAfter("-Xplugin").split(",") buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)
assertTrue("Expected serialization plugin to go first; actual order: $xPlugin") { xPlugin.first().contains("serialization") } ) {
val xPlugin = output
.split(" ")
.single { it.startsWith("-Xplugin") }
.substringAfter("-Xplugin")
.split(",")
assertTrue(xPlugin.first().contains("serialization")) {
"Expected serialization plugin to go first; actual order: $xPlugin"
}
}
} }
} }
} }
@@ -26,7 +26,13 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE =
id "org.jetbrains.kotlin.multiplatform" version "${'$'}kotlin_version" id "org.jetbrains.kotlin.multiplatform" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.multiplatform.pm20" version "${'$'}kotlin_version" id "org.jetbrains.kotlin.multiplatform.pm20" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.plugin.allopen" version "${'$'}kotlin_version" id "org.jetbrains.kotlin.plugin.allopen" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.plugin.spring" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.plugin.jpa" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.plugin.noarg" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.plugin.lombok" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.plugin.serialization" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.test.fixes.android" version "${'$'}test_fixes_version" id "org.jetbrains.kotlin.test.fixes.android" version "${'$'}test_fixes_version"
id "org.jetbrains.kotlin.gradle-subplugin-example" version "${'$'}kotlin_version"
} }
resolutionStrategy { resolutionStrategy {
@@ -48,6 +54,10 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE =
break break
case "kotlin2js": case "kotlin2js":
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version") useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version")
break
case "org.jetbrains.kotlin.plugin.sam.with.receiver":
useModule("org.jetbrains.kotlin:kotlin-sam-with-receiver:${'$'}kotlin_version")
break
} }
} }
} }
@@ -76,7 +86,13 @@ internal val DEFAULT_KOTLIN_SETTINGS_FILE =
id("org.jetbrains.kotlin.multiplatform") version kotlin_version id("org.jetbrains.kotlin.multiplatform") version kotlin_version
id("org.jetbrains.kotlin.multiplatform.pm20") version kotlin_version id("org.jetbrains.kotlin.multiplatform.pm20") version kotlin_version
id("org.jetbrains.kotlin.plugin.allopen") version kotlin_version id("org.jetbrains.kotlin.plugin.allopen") version kotlin_version
id("org.jetbrains.kotlin.plugin.spring") version kotlin_version
id("org.jetbrains.kotlin.plugin.jpa") version kotlin_version
id("org.jetbrains.kotlin.plugin.noarg") version kotlin_version
id("org.jetbrains.kotlin.plugin.lombok") version kotlin_version
id("org.jetbrains.kotlin.plugin.serialization") version kotlin_version
id("org.jetbrains.kotlin.test.fixes.android") version test_fixes_version id("org.jetbrains.kotlin.test.fixes.android") version test_fixes_version
id("org.jetbrains.kotlin.gradle-subplugin-example") version kotlin_version
} }
resolutionStrategy { resolutionStrategy {
@@ -93,6 +109,8 @@ internal val DEFAULT_KOTLIN_SETTINGS_FILE =
"com.android.feature" -> useModule("com.android.tools.build:gradle:${'$'}android_tools_version") "com.android.feature" -> useModule("com.android.tools.build:gradle:${'$'}android_tools_version")
"kotlin-dce-js" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version") "kotlin-dce-js" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version")
"kotlin2js" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version") "kotlin2js" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version")
"org.jetbrains.kotlin.plugin.sam.with.receiver" ->
useModule("org.jetbrains.kotlin:kotlin-sam-with-receiver:${'$'}kotlin_version")
} }
} }
} }
@@ -1,16 +1,7 @@
buildscript { plugins {
repositories { id "org.jetbrains.kotlin.jvm"
mavenLocal() id "org.jetbrains.kotlin.plugin.allopen"
mavenCentral()
} }
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
}
}
apply plugin: "kotlin"
apply plugin: "kotlin-allopen"
repositories { repositories {
mavenLocal() mavenLocal()
@@ -24,7 +15,3 @@ sourceSets {
allOpen { allOpen {
annotation("lib.AllOpen") annotation("lib.AllOpen")
} }
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
@@ -1,16 +1,7 @@
buildscript { plugins {
repositories { id "org.jetbrains.kotlin.jvm"
mavenLocal() id "org.jetbrains.kotlin.plugin.spring"
mavenCentral()
} }
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
}
}
apply plugin: "kotlin"
apply plugin: "kotlin-spring"
repositories { repositories {
mavenLocal() mavenLocal()
@@ -20,7 +11,3 @@ repositories {
sourceSets { sourceSets {
main.kotlin.srcDir 'src' main.kotlin.srcDir 'src'
} }
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
@@ -1,22 +1,9 @@
buildscript { plugins {
repositories { id("org.jetbrains.kotlin.jvm")
mavenLocal() id("org.jetbrains.kotlin.gradle-subplugin-example")
mavenCentral()
} }
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-subplugin-example:$kotlin_version"
}
}
apply plugin: "kotlin"
apply plugin: "kotlin-example-subplugin"
repositories { repositories {
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
} }
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
@@ -1,15 +1,3 @@
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-lombok:$kotlin_version"
}
}
allprojects { allprojects {
repositories { repositories {
mavenLocal() mavenLocal()
@@ -1,14 +1,6 @@
plugins { plugins {
id "java" id "java"
id "kotlin" id "org.jetbrains.kotlin.jvm"
id "kotlin-lombok" id "org.jetbrains.kotlin.plugin.lombok"
id "io.freefair.lombok" version "5.3.0" id "io.freefair.lombok" version "5.3.0"
} }
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
@@ -1,14 +1,12 @@
plugins { plugins {
id "java" id "java"
id "kotlin" id "org.jetbrains.kotlin.jvm"
id "kotlin-kapt" id "org.jetbrains.kotlin.kapt"
id "kotlin-lombok" id "org.jetbrains.kotlin.plugin.lombok"
id "io.freefair.lombok" version "5.3.0" id "io.freefair.lombok" version "5.3.0"
} }
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
kapt "com.google.dagger:dagger-compiler:2.33" kapt "com.google.dagger:dagger-compiler:2.33"
} }
@@ -19,7 +17,3 @@ kapt {
kotlinLombok { kotlinLombok {
lombokConfigurationFile file("lombok.config") lombokConfigurationFile file("lombok.config")
} }
@@ -1,21 +1,15 @@
plugins { plugins {
id "java" id "java"
id "kotlin" id "org.jetbrains.kotlin.jvm"
id "kotlin-kapt" id "org.jetbrains.kotlin.kapt"
id "kotlin-lombok" id "org.jetbrains.kotlin.plugin.lombok"
id "io.freefair.lombok" version "5.3.0" id "io.freefair.lombok" version "5.3.0"
} }
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
kapt "com.google.dagger:dagger-compiler:2.33" kapt "com.google.dagger:dagger-compiler:2.33"
} }
kapt { kapt {
keepJavacAnnotationProcessors = true keepJavacAnnotationProcessors = true
} }
@@ -1,16 +1,7 @@
buildscript { plugins {
repositories { id "org.jetbrains.kotlin.jvm"
mavenLocal() id "org.jetbrains.kotlin.plugin.jpa"
mavenCentral()
} }
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
}
}
apply plugin: "kotlin"
apply plugin: "kotlin-jpa"
repositories { repositories {
mavenLocal() mavenLocal()
@@ -20,7 +11,3 @@ repositories {
sourceSets { sourceSets {
main.kotlin.srcDir 'src' main.kotlin.srcDir 'src'
} }
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
@@ -1,16 +1,7 @@
buildscript { plugins {
repositories { id "org.jetbrains.kotlin.jvm"
mavenLocal() id "org.jetbrains.kotlin.plugin.noarg"
mavenCentral()
} }
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
}
}
apply plugin: "kotlin"
apply plugin: "kotlin-noarg"
repositories { repositories {
mavenLocal() mavenLocal()
@@ -24,7 +15,3 @@ noArg {
sourceSets { sourceSets {
main.kotlin.srcDir 'src' main.kotlin.srcDir 'src'
} }
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
@@ -1,16 +1,7 @@
buildscript { plugins {
repositories { id "org.jetbrains.kotlin.jvm"
mavenLocal() id "org.jetbrains.kotlin.plugin.sam.with.receiver"
mavenCentral()
} }
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-sam-with-receiver:$kotlin_version"
}
}
apply plugin: "kotlin"
apply plugin: "kotlin-sam-with-receiver"
repositories { repositories {
mavenLocal() mavenLocal()
@@ -24,7 +15,3 @@ sourceSets {
samWithReceiver { samWithReceiver {
annotation("lib.SamWithReceiver") annotation("lib.SamWithReceiver")
} }
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
@@ -1,4 +1,6 @@
apply plugin: 'kotlin' plugins {
id "org.jetbrains.kotlin.jvm"
}
dependencies { dependencies {
implementation project(':script-template') implementation project(':script-template')
@@ -1,13 +1,3 @@
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects { allprojects {
repositories { repositories {
mavenLocal() mavenLocal()
@@ -1,4 +1,6 @@
apply plugin: 'kotlin' plugins {
id "org.jetbrains.kotlin.jvm"
}
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
@@ -1,4 +1,6 @@
apply plugin: 'kotlin' plugins {
id "org.jetbrains.kotlin.jvm"
}
dependencies { dependencies {
implementation project(':script-template') implementation project(':script-template')
@@ -1,13 +1,3 @@
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects { allprojects {
repositories { repositories {
mavenLocal() mavenLocal()
@@ -1,4 +1,6 @@
apply plugin: 'kotlin' plugins {
id "org.jetbrains.kotlin.jvm"
}
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"