1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
import build.futureKotlin
plugins {
id("kotlin-dsl-module")
`maven-publish`
`java-gradle-plugin`
id("com.gradle.plugin-publish") version "0.9.9"
}
base {
archivesBaseName = "gradle-kotlin-dsl-plugins"
}
dependencies {
compileOnly(gradleKotlinDsl())
implementation(futureKotlin("stdlib-jdk8"))
implementation(futureKotlin("gradle-plugin"))
implementation(futureKotlin("sam-with-receiver"))
testImplementation(project(":test-fixtures"))
}
// --- Plugins declaration ----------------------------------------------
data class GradlePlugin(val displayName: String, val id: String, val implementationClass: String)
val plugins = listOf(
GradlePlugin(
"Embedded Kotlin Gradle Plugin",
"org.gradle.kotlin.embedded-kotlin",
"org.gradle.kotlin.dsl.plugins.embedded.EmbeddedKotlinPlugin"),
GradlePlugin(
"Gradle Kotlin DSL Plugin",
"org.gradle.kotlin.kotlin-dsl",
"org.gradle.kotlin.dsl.plugins.dsl.KotlinDslPlugin"))
plugins.forEach { plugin ->
gradlePlugin {
(plugins) {
plugin.id {
id = plugin.id
implementationClass = plugin.implementationClass
}
}
}
pluginBundle {
tags = listOf("Kotlin", "DSL")
website = "https://github.com/gradle/kotlin-dsl"
vcsUrl = "https://github.com/gradle/kotlin-dsl"
mavenCoordinates.artifactId = base.archivesBaseName
(plugins) {
plugin.id {
id = plugin.id
displayName = plugin.displayName
description = plugin.displayName
}
}
}
}
publishing {
repositories {
maven(url = "build/repository") {
name = "test"
}
}
}
val customInstallation by rootProject.tasks
tasks {
val publishPluginsToTestRepository by creating {
dependsOn("publishPluginMavenPublicationToTestRepository")
dependsOn(
plugins.map {
"publish${it.id.capitalize()}PluginMarkerMavenPublicationToTestRepository"
})
}
val processTestResources: ProcessResources by getting
val writeTestProperties by creating(WriteProperties::class) {
outputFile = File(processTestResources.destinationDir, "test.properties")
property("version", version)
}
processTestResources.dependsOn(writeTestProperties)
"test" {
dependsOn(customInstallation)
dependsOn(publishPluginsToTestRepository)
}
}
|