Closed Quillraven closed 1 year ago
workaround mentioned in #111 works for me. Here is the updated file:
@file:Suppress("UNUSED_VARIABLE")
import kotlinx.benchmark.gradle.KotlinJvmBenchmarkTarget
plugins {
kotlin("multiplatform") version "1.8.21"
id("org.jetbrains.kotlinx.benchmark") version "0.4.8"
id("org.jetbrains.dokka") version "1.8.10"
`maven-publish`
signing
}
group = "io.github.quillraven.fleks"
version = "2.3"
java.sourceCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenCentral()
}
kotlin {
targets {
jvm {
compilations {
all { kotlinOptions { jvmTarget = "1.8" } }
val main by getting
// custom benchmark compilation
val benchmarks by creating { associateWith(main) }
benchmark.targets.add(
KotlinJvmBenchmarkTarget(benchmark, benchmarks.defaultSourceSet.name, benchmarks)
)
}
withJava()
testRuns["test"].executionTask.configure {
useJUnitPlatform()
}
}
}
js(IR) {
browser { }
}
val hostOs = System.getProperty("os.name")
val isMingwX64 = hostOs.startsWith("Windows")
val nativeTarget = when {
hostOs == "Mac OS X" -> macosX64("native")
hostOs == "Linux" -> linuxX64("native")
isMingwX64 -> mingwX64("native")
else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
}
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
val jvmMain by getting
val jvmTest by getting
val jvmBenchmarks by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-benchmark-runtime:0.4.8")
implementation("com.badlogicgames.ashley:ashley:1.7.4")
implementation("net.onedaybeard.artemis:artemis-odb:2.3.0")
}
}
val jsMain by getting
val jsTest by getting
val nativeMain by getting
val nativeTest by getting
}
}
val javadocJar by tasks.registering(Jar::class) {
archiveClassifier.set("javadoc")
from(tasks.dokkaHtml)
}
publishing {
repositories {
maven {
url = if (project.version.toString().endsWith("SNAPSHOT")) {
uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")
} else {
uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
}
credentials {
username = System.getenv("OSSRH_USERNAME")
password = System.getenv("OSSRH_TOKEN")
}
}
}
publications {
val kotlinMultiplatform by getting(MavenPublication::class) {
// we need to keep this block up here because
// otherwise the different target folders like js/jvm/native are not created
version = project.version.toString()
groupId = project.group.toString()
artifactId = "Fleks"
}
}
publications.forEach {
if (it !is MavenPublication) {
return@forEach
}
// We need to add the javadocJar to every publication
// because otherwise maven is complaining.
// It is not sufficient to only have it in the "root" folder.
it.artifact(javadocJar)
// pom information needs to be specified per publication
// because otherwise maven will complain again that
// information like license, developer or url are missing.
it.pom {
name.set("Fleks")
description.set("A lightweight entity component system written in Kotlin.")
url.set("https://github.com/Quillraven/Fleks")
scm {
connection.set("scm:git:git@github.com:quillraven/fleks.git")
developerConnection.set("scm:git:git@github.com:quillraven/fleks.git")
url.set("https://github.com/quillraven/fleks/")
}
licenses {
license {
name.set("MIT License")
url.set("https://opensource.org/licenses/MIT")
}
}
developers {
developer {
id.set("Quillraven")
name.set("Simon Klausner")
email.set("quillraven@gmail.com")
}
}
}
signing {
useInMemoryPgpKeys(System.getenv("SIGNING_KEY"), System.getenv("SIGNING_PASSWORD"))
sign(it)
}
}
}
// only sign if version is not a SNAPSHOT release.
// this makes it easier to publish to mavenLocal and test the packed version.
tasks.withType<Sign>().configureEach {
onlyIf { !project.version.toString().endsWith("SNAPSHOT") }
}
Hi,
I wanted to update my project to Kotlin 1.8.10 but the jvm benchmark setup is breaking unfortunately: https://github.com/Quillraven/Fleks
Everything is working just fine with 1.7.21 and kotlinx-benchmark 0.4.5. My current file looks like this:
With that I have a separate benchmark sourceset and the kotlinx-benchmark dependency is also not part of the "main" library.
Now when I update to Kotlin 1.8.10, I get a warning in gradle:
And additionally, my benchmarks are no longer compiling because it cannot find the annotations for org.openjdk.jmh like
@State
or@Setup
.I then tried to upgrade kotlinx-benchmark to 0.4.7 but that didn't help. I then tried to change
defaultSourceSet
toplatformType.name
but that gives another gradle exception:Any idea how to solve that? Or is this unintentional and fixed in 0.4.8? If so, when is 0.4.8 released?
Thanks for your help!