Add Kotlin/Native specific plugin

This commit is contained in:
Brian Norman
2020-08-29 18:56:59 -05:00
parent 0b031872ac
commit cc35a072d8
4 changed files with 129 additions and 1 deletions
@@ -34,7 +34,13 @@ class PowerAssertGradlePlugin : KotlinCompilerPluginSupportPlugin {
override fun getPluginArtifact(): SubpluginArtifact = SubpluginArtifact(
groupId = "com.bnorm.power",
artifactId = "kotlin-power-assert",
artifactId = "kotlin-power-assert-plugin",
version = "0.5.0-SNAPSHOT"
)
override fun getPluginArtifactForNative(): SubpluginArtifact = SubpluginArtifact(
groupId = "com.bnorm.power",
artifactId = "kotlin-power-assert-plugin-native",
version = "0.5.0-SNAPSHOT"
)
@@ -0,0 +1 @@
src/
@@ -0,0 +1,120 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
kotlin("jvm")
kotlin("kapt")
id("org.jetbrains.dokka")
signing
`maven-publish`
}
dependencies {
compileOnly("org.jetbrains.kotlin:kotlin-compiler")
kapt("com.google.auto.service:auto-service:1.0-rc6")
compileOnly("com.google.auto.service:auto-service-annotations:1.0-rc6")
}
tasks.named("compileKotlin") { dependsOn("syncSource") }
tasks.register<Sync>("syncSource") {
from(project(":kotlin-power-assert-plugin").sourceSets.main.get().allSource)
into("src/main/kotlin")
filter {
// Replace shadowed imports from kotlin-power-assert-plugin
when (it) {
"import org.jetbrains.kotlin.com.intellij.mock.MockProject" -> "import com.intellij.mock.MockProject"
else -> it
}
}
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
tasks.dokka {
outputFormat = "html"
outputDirectory = "$buildDir/javadoc"
}
tasks.register("sourcesJar", Jar::class) {
group = "build"
description = "Assembles Kotlin sources"
archiveClassifier.set("sources")
from(sourceSets.main.get().allSource)
dependsOn(tasks.classes)
}
tasks.register("dokkaJar", Jar::class) {
group = "documentation"
description = "Assembles Kotlin docs with Dokka"
archiveClassifier.set("javadoc")
from(tasks.dokka)
dependsOn(tasks.dokka)
}
signing {
setRequired(provider { gradle.taskGraph.hasTask("publish") })
sign(publishing.publications)
}
publishing {
publications {
create<MavenPublication>("default") {
from(components["java"])
artifact(tasks["sourcesJar"])
artifact(tasks["dokkaJar"])
pom {
name.set(project.name)
description.set("Kotlin compiler plugin to enable power assertions in the Kotlin programming language")
url.set("https://github.com/bnorm/kotlin-power-assert")
licenses {
license {
name.set("Apache License 2.0")
url.set("https://github.com/bnorm/kotlin-power-assert/blob/master/LICENSE.txt")
}
}
scm {
url.set("https://github.com/bnorm/kotlin-power-assert")
connection.set("scm:git:git://github.com/bnorm/kotlin-power-assert.git")
}
developers {
developer {
name.set("Brian Norman")
url.set("https://github.com/bnorm")
}
}
}
}
}
repositories {
if (
hasProperty("sonatypeUsername") &&
hasProperty("sonatypePassword") &&
hasProperty("sonatypeSnapshotUrl") &&
hasProperty("sonatypeReleaseUrl")
) {
maven {
val url = when {
"SNAPSHOT" in version.toString() -> property("sonatypeSnapshotUrl")
else -> property("sonatypeReleaseUrl")
} as String
setUrl(url)
credentials {
username = property("sonatypeUsername") as String
password = property("sonatypePassword") as String
}
}
}
maven {
name = "test"
setUrl("file://${rootProject.buildDir}/localMaven")
}
}
}
+1
View File
@@ -2,3 +2,4 @@ rootProject.name = "kotlin-power-assert"
include(":kotlin-power-assert-gradle")
include(":kotlin-power-assert-plugin")
include(":kotlin-power-assert-plugin-native")