Fix for https://youtrack.jetbrains.com/issue/KT-38230. Breakin change on the API.
This commit is contained in:
parent
f2a5d0715c
commit
9e37d6f752
@ -3,11 +3,11 @@ import java.util.*
|
|||||||
plugins {
|
plugins {
|
||||||
`kotlin-dsl`
|
`kotlin-dsl`
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
id("com.jfrog.bintray") version "1.8.4"
|
id("com.jfrog.bintray") version "1.8.5"
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "scientifik"
|
group = "scientifik"
|
||||||
version = "0.4.2"
|
version = "0.5.0"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
@ -16,7 +16,7 @@ repositories {
|
|||||||
maven("https://dl.bintray.com/kotlin/kotlin-eap")
|
maven("https://dl.bintray.com/kotlin/kotlin-eap")
|
||||||
}
|
}
|
||||||
|
|
||||||
val kotlinVersion = "1.3.71"
|
val kotlinVersion = "1.3.72"
|
||||||
|
|
||||||
java {
|
java {
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
@ -26,7 +26,7 @@ java {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
|
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
|
||||||
implementation("org.jetbrains.kotlin:kotlin-serialization:$kotlinVersion")
|
implementation("org.jetbrains.kotlin:kotlin-serialization:$kotlinVersion")
|
||||||
implementation("org.jetbrains.kotlinx:atomicfu-gradle-plugin:0.14.2")
|
implementation("org.jetbrains.kotlinx:atomicfu-gradle-plugin:0.14.3")
|
||||||
implementation("org.jetbrains.dokka:dokka-gradle-plugin:0.10.1")
|
implementation("org.jetbrains.dokka:dokka-gradle-plugin:0.10.1")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,11 +56,11 @@ gradlePlugin {
|
|||||||
implementationClass = "scientifik.ScientifikJSPlugin"
|
implementationClass = "scientifik.ScientifikJSPlugin"
|
||||||
}
|
}
|
||||||
|
|
||||||
create("scientifik-atomic") {
|
// create("scientifik-atomic") {
|
||||||
id = "scientifik.atomic"
|
// id = "scientifik.atomic"
|
||||||
description = "Add kotlin atomic plugin to any flafor"
|
// description = "Add kotlin atomic plugin to any flafor"
|
||||||
implementationClass = "scientifik.ScientifikAtomicPlugin"
|
// implementationClass = "scientifik.ScientifikAtomicPlugin"
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package scientifik
|
|||||||
|
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.tasks.Copy
|
||||||
import org.gradle.kotlin.dsl.configure
|
import org.gradle.kotlin.dsl.configure
|
||||||
import org.gradle.kotlin.dsl.get
|
import org.gradle.kotlin.dsl.get
|
||||||
import org.gradle.kotlin.dsl.getValue
|
import org.gradle.kotlin.dsl.getValue
|
||||||
@ -45,6 +46,9 @@ open class ScientifikJSPlugin : Plugin<Project> {
|
|||||||
|
|
||||||
tasks.apply {
|
tasks.apply {
|
||||||
|
|
||||||
|
val processResources by getting(Copy::class)
|
||||||
|
processResources.copyJSResources(configurations["runtimeClasspath"])
|
||||||
|
|
||||||
val browserDistribution by getting {
|
val browserDistribution by getting {
|
||||||
doLast {
|
doLast {
|
||||||
val indexFile = project.jsDistDirectory.resolve("index.html")
|
val indexFile = project.jsDistDirectory.resolve("index.html")
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package scientifik
|
package scientifik
|
||||||
|
|
||||||
import Scientifik
|
import Scientifik
|
||||||
import org.gradle.api.JavaVersion
|
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.plugins.JavaBasePlugin
|
import org.gradle.api.plugins.JavaBasePlugin
|
||||||
@ -23,7 +22,7 @@ open class ScientifikJVMPlugin : Plugin<Project> {
|
|||||||
repositories.applyRepos()
|
repositories.applyRepos()
|
||||||
|
|
||||||
extensions.findByType<JavaPluginExtension>()?.apply {
|
extensions.findByType<JavaPluginExtension>()?.apply {
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = enumValueOf(Scientifik.JVM_VERSION)
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType<KotlinCompile> {
|
tasks.withType<KotlinCompile> {
|
||||||
|
@ -6,6 +6,7 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.plugins.JavaBasePlugin
|
import org.gradle.api.plugins.JavaBasePlugin
|
||||||
import org.gradle.api.publish.PublishingExtension
|
import org.gradle.api.publish.PublishingExtension
|
||||||
import org.gradle.api.publish.maven.MavenPublication
|
import org.gradle.api.publish.maven.MavenPublication
|
||||||
|
import org.gradle.api.tasks.Copy
|
||||||
import org.gradle.api.tasks.bundling.Jar
|
import org.gradle.api.tasks.bundling.Jar
|
||||||
import org.gradle.api.tasks.testing.Test
|
import org.gradle.api.tasks.testing.Test
|
||||||
import org.gradle.kotlin.dsl.*
|
import org.gradle.kotlin.dsl.*
|
||||||
@ -30,7 +31,7 @@ open class ScientifikMPPlugin : Plugin<Project> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
js {
|
val js = js {
|
||||||
browser {
|
browser {
|
||||||
webpackTask {
|
webpackTask {
|
||||||
outputFileName = "main.bundle.js"
|
outputFileName = "main.bundle.js"
|
||||||
@ -114,10 +115,9 @@ open class ScientifikMPPlugin : Plugin<Project> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tasks.apply {
|
tasks.apply {
|
||||||
|
val jsProcessResources by getting(Copy::class)
|
||||||
|
jsProcessResources.copyJSResources(configurations["jsRuntimeClasspath"])
|
||||||
|
|
||||||
val jsBrowserDistribution by getting {
|
val jsBrowserDistribution by getting {
|
||||||
doLast {
|
doLast {
|
||||||
@ -128,6 +128,7 @@ open class ScientifikMPPlugin : Plugin<Project> {
|
|||||||
}
|
}
|
||||||
group = "distribution"
|
group = "distribution"
|
||||||
}
|
}
|
||||||
|
|
||||||
withType<Test>() {
|
withType<Test>() {
|
||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
package scientifik
|
package scientifik
|
||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.artifacts.Configuration
|
||||||
|
import org.gradle.api.artifacts.ProjectDependency
|
||||||
import org.gradle.api.artifacts.dsl.RepositoryHandler
|
import org.gradle.api.artifacts.dsl.RepositoryHandler
|
||||||
|
import org.gradle.api.tasks.Copy
|
||||||
import org.gradle.kotlin.dsl.maven
|
import org.gradle.kotlin.dsl.maven
|
||||||
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
|
import org.jetbrains.kotlin.gradle.plugin.LanguageSettingsBuilder
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -26,6 +29,36 @@ internal fun RepositoryHandler.applyRepos(): Unit {
|
|||||||
maven("https://dl.bintray.com/mipt-npm/dataforge")
|
maven("https://dl.bintray.com/mipt-npm/dataforge")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
internal fun Copy.copyJSResources(configuration: Configuration): Unit = project.afterEvaluate {
|
||||||
|
val projectDeps = configuration
|
||||||
|
.allDependencies
|
||||||
|
.filterIsInstance<ProjectDependency>()
|
||||||
|
.map { it.dependencyProject }
|
||||||
|
|
||||||
|
val destination = destinationDir
|
||||||
|
|
||||||
|
projectDeps.forEach { dep ->
|
||||||
|
dep.pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") {
|
||||||
|
dep.tasks.findByName("jsProcessResources")?.let { task ->
|
||||||
|
val sourceDir = (task as Copy).destinationDir
|
||||||
|
inputs.files(sourceDir)
|
||||||
|
dependsOn(task)
|
||||||
|
from(sourceDir)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dep.pluginManager.withPlugin("org.jetbrains.kotlin.js") {
|
||||||
|
dep.tasks.findByName("processResources")?.let { task ->
|
||||||
|
val sourceDir = (task as Copy).destinationDir
|
||||||
|
inputs.files(sourceDir)
|
||||||
|
dependsOn(task)
|
||||||
|
from(sourceDir)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
val Project.jsDistDirectory: File
|
val Project.jsDistDirectory: File
|
||||||
get() {
|
get() {
|
||||||
val distributionName = listOf(
|
val distributionName = listOf(
|
||||||
|
@ -5,8 +5,6 @@ import kotlinx.atomicfu.plugin.gradle.sourceSets
|
|||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.kotlin.dsl.findByType
|
import org.gradle.kotlin.dsl.findByType
|
||||||
import org.gradle.kotlin.dsl.invoke
|
import org.gradle.kotlin.dsl.invoke
|
||||||
import org.gradle.kotlin.dsl.maven
|
|
||||||
import org.gradle.kotlin.dsl.repositories
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
|
|
||||||
enum class DependencyConfiguration {
|
enum class DependencyConfiguration {
|
||||||
@ -75,90 +73,7 @@ internal fun Project.useDependency(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class SerializationTargets(
|
fun Project.useCoroutines(
|
||||||
val sourceSet: DependencySourceSet,
|
|
||||||
val configuration: DependencyConfiguration
|
|
||||||
) {
|
|
||||||
fun Project.cbor(
|
|
||||||
version: String = Scientifik.serializationVersion
|
|
||||||
) {
|
|
||||||
useDependency(
|
|
||||||
"common" to "org.jetbrains.kotlinx:kotlinx-serialization-cbor-common:$version",
|
|
||||||
"jvm" to "org.jetbrains.kotlinx:kotlinx-serialization-cbor:$version",
|
|
||||||
"js" to "org.jetbrains.kotlinx:kotlinx-serialization-cbor-js:$version",
|
|
||||||
"native" to "org.jetbrains.kotlinx:kotlinx-serialization-cbor-native:$version",
|
|
||||||
dependencySourceSet = sourceSet,
|
|
||||||
dependencyConfiguration = configuration
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Project.protobuf(
|
|
||||||
version: String = Scientifik.serializationVersion
|
|
||||||
) {
|
|
||||||
useDependency(
|
|
||||||
"common" to "org.jetbrains.kotlinx:kotlinx-serialization-protobuf-common:$version",
|
|
||||||
"jvm" to "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$version",
|
|
||||||
"js" to "org.jetbrains.kotlinx:kotlinx-serialization-protobuf-js:$version",
|
|
||||||
"native" to "org.jetbrains.kotlinx:kotlinx-serialization-protobuf-native:$version",
|
|
||||||
dependencySourceSet = sourceSet,
|
|
||||||
dependencyConfiguration = configuration
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Project.xml(
|
|
||||||
version: String = Scientifik.Serialization.xmlVersion
|
|
||||||
) {
|
|
||||||
repositories {
|
|
||||||
maven("https://dl.bintray.com/pdvrieze/maven")
|
|
||||||
}
|
|
||||||
useDependency(
|
|
||||||
"common" to "net.devrieze:xmlutil-serialization:$version",
|
|
||||||
"jvm" to "net.devrieze:xmlutil-serialization:$version",
|
|
||||||
"js" to "net.devrieze:xmlutil-serialization:$version",
|
|
||||||
dependencySourceSet = sourceSet,
|
|
||||||
dependencyConfiguration = configuration
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Project.yaml(
|
|
||||||
version: String = Scientifik.Serialization.yamlVersion
|
|
||||||
) {
|
|
||||||
useDependency(
|
|
||||||
"jvm" to "com.charleskorn.kaml:kaml:$version",
|
|
||||||
dependencySourceSet = sourceSet,
|
|
||||||
dependencyConfiguration = configuration
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Project.bson(
|
|
||||||
version: String = Scientifik.Serialization.bsonVersion
|
|
||||||
) {
|
|
||||||
useDependency(
|
|
||||||
"jvm" to "com.github.jershell:kbson:$version",
|
|
||||||
dependencySourceSet = sourceSet,
|
|
||||||
dependencyConfiguration = configuration
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Project.serialization(
|
|
||||||
version: String = Scientifik.serializationVersion,
|
|
||||||
sourceSet: DependencySourceSet = DependencySourceSet.MAIN,
|
|
||||||
configuration: DependencyConfiguration = DependencyConfiguration.API,
|
|
||||||
block: SerializationTargets.() -> Unit = {}
|
|
||||||
) {
|
|
||||||
plugins.apply("org.jetbrains.kotlin.plugin.serialization")
|
|
||||||
useDependency(
|
|
||||||
"common" to "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$version",
|
|
||||||
"jvm" to "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$version",
|
|
||||||
"js" to "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$version",
|
|
||||||
"native" to "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$version",
|
|
||||||
dependencySourceSet = sourceSet
|
|
||||||
)
|
|
||||||
SerializationTargets(sourceSet, configuration).apply(block)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun Project.coroutines(
|
|
||||||
version: String = Scientifik.coroutinesVersion,
|
version: String = Scientifik.coroutinesVersion,
|
||||||
sourceSet: DependencySourceSet = DependencySourceSet.MAIN,
|
sourceSet: DependencySourceSet = DependencySourceSet.MAIN,
|
||||||
configuration: DependencyConfiguration = DependencyConfiguration.API
|
configuration: DependencyConfiguration = DependencyConfiguration.API
|
||||||
|
@ -46,12 +46,12 @@ fun KotlinDependencyHandler.addFXDependencies(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Project.fx(
|
fun Project.useFx(
|
||||||
vararg modules: FXModule,
|
vararg modules: FXModule,
|
||||||
configuration: DependencyConfiguration = DependencyConfiguration.COMPILE_ONLY,
|
configuration: DependencyConfiguration = DependencyConfiguration.COMPILE_ONLY,
|
||||||
version: String = "14",
|
version: String = "14",
|
||||||
platform: FXPlatform = defaultPlatform
|
platform: FXPlatform = defaultPlatform
|
||||||
) {
|
): Unit = afterEvaluate{
|
||||||
pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") {
|
pluginManager.withPlugin("org.jetbrains.kotlin.multiplatform") {
|
||||||
extensions.findByType<KotlinMultiplatformExtension>()?.apply {
|
extensions.findByType<KotlinMultiplatformExtension>()?.apply {
|
||||||
sourceSets.findByName("jvmMain")?.apply {
|
sourceSets.findByName("jvmMain")?.apply {
|
||||||
|
89
src/main/kotlin/scientifik/serialization.kt
Normal file
89
src/main/kotlin/scientifik/serialization.kt
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
package scientifik
|
||||||
|
|
||||||
|
import Scientifik
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.maven
|
||||||
|
import org.gradle.kotlin.dsl.repositories
|
||||||
|
|
||||||
|
class SerializationTargets(
|
||||||
|
val sourceSet: DependencySourceSet,
|
||||||
|
val configuration: DependencyConfiguration
|
||||||
|
) {
|
||||||
|
fun Project.cbor(
|
||||||
|
version: String = Scientifik.serializationVersion
|
||||||
|
) {
|
||||||
|
useDependency(
|
||||||
|
"common" to "org.jetbrains.kotlinx:kotlinx-serialization-cbor-common:$version",
|
||||||
|
"jvm" to "org.jetbrains.kotlinx:kotlinx-serialization-cbor:$version",
|
||||||
|
"js" to "org.jetbrains.kotlinx:kotlinx-serialization-cbor-js:$version",
|
||||||
|
"native" to "org.jetbrains.kotlinx:kotlinx-serialization-cbor-native:$version",
|
||||||
|
dependencySourceSet = sourceSet,
|
||||||
|
dependencyConfiguration = configuration
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.protobuf(
|
||||||
|
version: String = Scientifik.serializationVersion
|
||||||
|
) {
|
||||||
|
useDependency(
|
||||||
|
"common" to "org.jetbrains.kotlinx:kotlinx-serialization-protobuf-common:$version",
|
||||||
|
"jvm" to "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$version",
|
||||||
|
"js" to "org.jetbrains.kotlinx:kotlinx-serialization-protobuf-js:$version",
|
||||||
|
"native" to "org.jetbrains.kotlinx:kotlinx-serialization-protobuf-native:$version",
|
||||||
|
dependencySourceSet = sourceSet,
|
||||||
|
dependencyConfiguration = configuration
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.xml(
|
||||||
|
version: String = Scientifik.Serialization.xmlVersion
|
||||||
|
) {
|
||||||
|
repositories {
|
||||||
|
maven("https://dl.bintray.com/pdvrieze/maven")
|
||||||
|
}
|
||||||
|
useDependency(
|
||||||
|
"common" to "net.devrieze:xmlutil-serialization:$version",
|
||||||
|
"jvm" to "net.devrieze:xmlutil-serialization:$version",
|
||||||
|
"js" to "net.devrieze:xmlutil-serialization:$version",
|
||||||
|
dependencySourceSet = sourceSet,
|
||||||
|
dependencyConfiguration = configuration
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.yaml(
|
||||||
|
version: String = Scientifik.Serialization.yamlVersion
|
||||||
|
) {
|
||||||
|
useDependency(
|
||||||
|
"jvm" to "com.charleskorn.kaml:kaml:$version",
|
||||||
|
dependencySourceSet = sourceSet,
|
||||||
|
dependencyConfiguration = configuration
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.bson(
|
||||||
|
version: String = Scientifik.Serialization.bsonVersion
|
||||||
|
) {
|
||||||
|
useDependency(
|
||||||
|
"jvm" to "com.github.jershell:kbson:$version",
|
||||||
|
dependencySourceSet = sourceSet,
|
||||||
|
dependencyConfiguration = configuration
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.useSerialization(
|
||||||
|
version: String = Scientifik.serializationVersion,
|
||||||
|
sourceSet: DependencySourceSet = DependencySourceSet.MAIN,
|
||||||
|
configuration: DependencyConfiguration = DependencyConfiguration.API,
|
||||||
|
block: SerializationTargets.() -> Unit = {}
|
||||||
|
) {
|
||||||
|
plugins.apply("org.jetbrains.kotlin.plugin.serialization")
|
||||||
|
useDependency(
|
||||||
|
"common" to "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$version",
|
||||||
|
"jvm" to "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$version",
|
||||||
|
"js" to "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$version",
|
||||||
|
"native" to "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$version",
|
||||||
|
dependencySourceSet = sourceSet
|
||||||
|
)
|
||||||
|
SerializationTargets(sourceSet, configuration).apply(block)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user