Commit 9403cb1f authored by Alexey Tsvetkov's avatar Alexey Tsvetkov

Set up publishing to Space

parent 21526244
...@@ -7,5 +7,5 @@ ...@@ -7,5 +7,5 @@
* Set JAVA_HOME to location of JDK, at least version 11 * Set JAVA_HOME to location of JDK, at least version 11
* Run `build.sh` at least once to properly set up Skija * Run `build.sh` at least once to properly set up Skija
* If Skija repo is updated - run `build.sh` again * If Skija repo is updated - run `build.sh` again
* `cd skiko && ./gradlew publishSkikoPublicationToMavenLocal` will build the artefact and publish it to local Maven repo * `cd skiko && ./gradlew publishToMavenLocal` will build the artefact and publish it to local Maven repo
...@@ -17,4 +17,4 @@ fi ...@@ -17,4 +17,4 @@ fi
java -jar ./libs/lombok.jar delombok skija/src/main/java -d skiko/src/jvmMain/java \ java -jar ./libs/lombok.jar delombok skija/src/main/java -d skiko/src/jvmMain/java \
--classpath=./libs/annotations-19.0.0.jar${SEP}./libs/lombok.jar --classpath=./libs/annotations-19.0.0.jar${SEP}./libs/lombok.jar
cd skiko && ./gradlew publishSkikoPublicationToMavenLocal cd skiko && ./gradlew publishToMavenLocal
## Publishing
##### Publish to Maven local
```
./gradlew publishToMavenLocal
```
##### Publish to `build/repo` directory
```
./gradlew publishToBuildRepo
```
##### Publish to Space
Set up environment variables `SKIKO_SPACE_USERNAME` and `SKIKO_SPACE_KEY`.
```
./gradlew publishToSpace
```
##### Publish to all repositories
```
./gradlew publish
```
##### Customize version
```
./gradlew <PUBLISH_TASK> -Pdeploy.version=0.1.2
```
...@@ -6,8 +6,7 @@ plugins { ...@@ -6,8 +6,7 @@ plugins {
`maven-publish` `maven-publish`
} }
group = "org.jetbrains.skiko" group = "org.jetbrains.skiko"
version = "0.1-SNAPSHOT" version = project.property("deploy.version") as String
val skiaDir = System.getenv("SKIA_DIR") ?: "/Users/igotti/compose/skija/third_party/skia" val skiaDir = System.getenv("SKIA_DIR") ?: "/Users/igotti/compose/skija/third_party/skia"
val hostOs = System.getProperty("os.name") val hostOs = System.getProperty("os.name")
...@@ -189,33 +188,98 @@ library { ...@@ -189,33 +188,98 @@ library {
}) })
} }
} }
val skikoJarFile = "$buildDir/skiko-$target.jar"
project.tasks.register<Jar>("skikoJar") { val skikoJvmJar: Provider<Jar> by tasks.registering(Jar::class) {
archiveBaseName.set("skiko-$target") archiveBaseName.set("skiko-jvm")
archiveFileName.set(skikoJarFile)
from(kotlin.jvm().compilations["main"].output.allOutputs) from(kotlin.jvm().compilations["main"].output.allOutputs)
from(project.tasks.named("linkRelease${target.capitalize()}").get().outputs.files.filter { it.isFile })
} }
val skikoArtifact = artifacts.add("archives", file(skikoJarFile)) { val skikoJvmRuntimeJar by project.tasks.registering(Jar::class) {
type = "jar" archiveBaseName.set("skiko-$target")
group = "skiko" from(skikoJvmJar.map { zipTree(it.archiveFile) })
builtBy("skikoJar") from(project.tasks.named("linkRelease${target.capitalize()}").map { it.outputs.files.filter { it.isFile }})
} }
project.tasks.register<JavaExec>("run") { project.tasks.register<JavaExec>("run") {
dependsOn("skikoJar")
main = "org.jetbrains.skiko.MainKt" main = "org.jetbrains.skiko.MainKt"
classpath = files(skikoJarFile) classpath = files(skikoJvmRuntimeJar.map { it.archiveFile })
} }
// disable unexpected native publications (default C++ publications are failing)
tasks.withType<AbstractPublishToMaven>().configureEach {
doFirst {
if (!publication.name.startsWith("skiko")) {
throw StopExecutionException("Publication '${publication.name}' is disabled")
}
}
}
fun Publication.isSkikoPublication() =
(this as? MavenPublication)?.name?.startsWith("skiko") == true
fun Task.disable() {
enabled = false
group = "Disabled tasks"
}
afterEvaluate {
tasks.configureEach {
if (group == "publishing") {
// There are many intermediate tasks in 'publishing' group.
// There are a lot of them and they have verbose names.
// To decrease noise in './gradlew tasks' output and Intellij Gradle tool window,
// group verbose tasks in a separate group 'other publishing'.
val allRepositories = publishing.repositories.map { it.name } + "MavenLocal"
val publishToTasks = allRepositories.map { "publishTo$it" }
if (name != "publish" && name !in publishToTasks) {
group = "other publishing"
}
}
}
// Disable publishing Gradle Metadata, because it seems unnecessary at the moment.
// Also generating metadata for default C++ publications fails
tasks.withType(GenerateModuleMetadata::class).configureEach {
disable()
}
// Disable publishing for default publications, because
// publishing for default C++ publications fails
tasks.withType<AbstractPublishToMaven>().configureEach {
if (!publication.isSkikoPublication()) {
disable()
}
}
}
publishing { publishing {
repositories {
configureEach {
val repoName = name
tasks.register("publishTo${repoName}") {
group = "publishing"
dependsOn(tasks.named("publishAllPublicationsTo${repoName}Repository"))
}
}
maven {
name = "BuildRepo"
url = uri("${rootProject.buildDir}/repo")
}
maven {
name = "Space"
url = uri("https://packages.jetbrains.team/maven/p/ui/dev")
credentials {
username = System.getenv("SKIKO_SPACE_USERNAME")
password = System.getenv("SKIKO_SPACE_KEY")
}
}
}
publications { publications {
create<MavenPublication>("skiko") { configureEach {
this as MavenPublication
groupId = "org.jetbrains.skiko" groupId = "org.jetbrains.skiko"
artifactId = "skiko-$target"
artifact(skikoArtifact)
pom { pom {
name.set("Skiko") name.set("Skiko")
description.set("Kotlin Skia bindings") description.set("Kotlin Skia bindings")
...@@ -228,5 +292,17 @@ publishing { ...@@ -228,5 +292,17 @@ publishing {
} }
} }
} }
create<MavenPublication>("skikoJvm") {
artifactId = "skiko-jvm"
afterEvaluate {
artifact(skikoJvmJar.map { it.archiveFile.get() })
}
}
create<MavenPublication>("skikoJvmRuntime") {
artifactId = "skiko-jvm-runtime-$target"
afterEvaluate {
artifact(skikoJvmRuntimeJar.map { it.archiveFile.get() })
}
}
} }
} }
kotlin.code.style=official kotlin.code.style=official
deploy.version=0.1-SNAPSHOT
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment