99 lines
3.4 KiB
Kotlin
99 lines
3.4 KiB
Kotlin
import com.jfrog.bintray.gradle.tasks.BintrayUploadTask
|
|
import org.gradle.api.Plugin
|
|
import org.gradle.api.Project
|
|
import org.gradle.api.publish.PublishingExtension
|
|
import org.gradle.api.publish.maven.MavenPublication
|
|
import org.gradle.api.publish.maven.internal.artifact.FileBasedMavenArtifact
|
|
import org.gradle.kotlin.dsl.configure
|
|
import org.gradle.kotlin.dsl.getValue
|
|
import org.gradle.kotlin.dsl.getting
|
|
import org.gradle.kotlin.dsl.invoke
|
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
|
import org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask
|
|
|
|
open class ScientifikMPPlugin : Plugin<Project> {
|
|
override fun apply(project: Project) {
|
|
project.plugins.apply("org.jetbrains.kotlin.multiplatform")
|
|
|
|
project.configure<KotlinMultiplatformExtension> {
|
|
jvm {
|
|
compilations.all {
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
}
|
|
}
|
|
}
|
|
|
|
js {
|
|
compilations.all {
|
|
kotlinOptions {
|
|
sourceMap = true
|
|
sourceMapEmbedSources = "always"
|
|
moduleKind = "commonjs"
|
|
}
|
|
}
|
|
}
|
|
|
|
sourceSets.invoke {
|
|
val commonMain by getting {
|
|
dependencies {
|
|
api(kotlin("stdlib"))
|
|
}
|
|
}
|
|
val commonTest by getting {
|
|
dependencies {
|
|
implementation(kotlin("test-common"))
|
|
implementation(kotlin("test-annotations-common"))
|
|
}
|
|
}
|
|
val jvmMain by getting {
|
|
dependencies {
|
|
api(kotlin("stdlib-jdk8"))
|
|
}
|
|
}
|
|
val jvmTest by getting {
|
|
dependencies {
|
|
implementation(kotlin("test"))
|
|
implementation(kotlin("test-junit"))
|
|
}
|
|
}
|
|
val jsMain by getting {
|
|
dependencies {
|
|
api(kotlin("stdlib-js"))
|
|
}
|
|
}
|
|
val jsTest by getting {
|
|
dependencies {
|
|
implementation(kotlin("test-js"))
|
|
}
|
|
}
|
|
}
|
|
|
|
targets.all {
|
|
sourceSets.all {
|
|
languageSettings.progressiveMode = true
|
|
languageSettings.enableLanguageFeature("InlineClasses")
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
project.tasks.filter { it is ArtifactoryTask || it is BintrayUploadTask }.forEach {
|
|
it.doFirst {
|
|
project.configure<PublishingExtension> {
|
|
publications
|
|
.filterIsInstance<MavenPublication>()
|
|
.forEach { publication ->
|
|
val moduleFile = project.buildDir.resolve("publications/${publication.name}/module.json")
|
|
if (moduleFile.exists()) {
|
|
publication.artifact(object : FileBasedMavenArtifact(moduleFile) {
|
|
override fun getDefaultExtension() = "module"
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
} |