summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDico200 <dico.karssiens@gmail.com>2018-07-25 01:45:27 +0100
committerDico200 <dico.karssiens@gmail.com>2018-07-25 01:45:27 +0100
commit80def8901a168ba7be3f41d10147c083750771c6 (patch)
tree7e6e628bbcd903076da8de04d5987f936d570d88
parenta26c25320a63806bf9a3bdf1e8dd4fd91962c41c (diff)
Set up multi gradle project and release jar task
-rw-r--r--build.gradle.kts159
1 files changed, 116 insertions, 43 deletions
diff --git a/build.gradle.kts b/build.gradle.kts
index 421da58..110ec17 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,87 +1,160 @@
+@file:Suppress("UNUSED_VARIABLE")
+
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.jetbrains.kotlin.gradle.dsl.Coroutines
+import java.io.PrintWriter
plugins {
kotlin("jvm") version "1.2.51"
id("com.github.johnrengelman.plugin-shadow") version "2.0.3"
}
+kotlin.experimental.coroutines = Coroutines.ENABLE
+
group = "io.dico"
version = "0.1"
-repositories {
- mavenCentral()
- mavenLocal()
- maven("https://dl.bintray.com/kotlin/exposed")
+allprojects {
+ apply {
+ plugin(JavaPlugin::class.java)
+ }
+ repositories {
+ mavenCentral()
+ mavenLocal()
+ maven("https://dl.bintray.com/kotlin/exposed")
+ }
+ dependencies {
+ compile(files("${rootProject.rootDir.parentFile}/res/spigot-1.13-pre7.jar"))
+ compile("net.sf.trove4j:trove4j:3.0.3")
+ testCompile("junit:junit:4.12")
+ }
}
-kotlin.experimental.coroutines = Coroutines.ENABLE
+project(":dicore3:dicore3-command") {
+ dependencies {
+ compile(project(":dicore3:dicore3-core"))
+ compile("com.thoughtworks.paranamer:paranamer:2.8")
+ }
+}
dependencies {
+ compile(project(":dicore3:dicore3-core"))
+ compile(project(":dicore3:dicore3-command"))
compile(kotlin("stdlib-jdk8"))
- shadow(files("../res/spigot-1.13-pre7.jar"))
-
- compile("io.dico.dicore:dicore3-core:1.2-mc-1.13")
- compile("io.dico.dicore:dicore3-command:1.2-mc-1.13")
-
compile("org.jetbrains.exposed:exposed:0.10.3")
compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:0.23.4")
compile("com.zaxxer:HikariCP:3.2.0")
- compile(files("../h2/bin/h2-1.4.197.jar"))
+ compile("com.h2database:h2:1.4.197")
val jacksonVersion = "2.9.6"
compile("com.fasterxml.jackson.core:jackson-core:$jacksonVersion")
compile("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion")
compile("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion")
- //compile("org.yaml:snakeyaml:1.21")
compile("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:$jacksonVersion")
- shadow("org.slf4j:slf4j-api:1.7.25")
+ compile("org.slf4j:slf4j-api:1.7.25")
compile("ch.qos.logback:logback-classic:1.2.3")
-
- testCompile("junit:junit:4.12")
}
tasks {
- val jar by getting(Jar::class) {
- group = "artifacts"
+ fun Jar.packageDependencies(vararg names: String) {
+ from(*project.configurations.compile.resolvedConfiguration.firstLevelModuleDependencies
+ .filter { it.moduleName in names }
+ .flatMap { it.allModuleArtifacts }
+ .map { it.file }
+ .map(::zipTree)
+ .toTypedArray()
+ )
}
- val fatJar by creating(Jar::class) {
- group = "artifacts"
- destinationDir = file("$rootDir/debug/plugins")
- baseName = "parcels2-all"
- from(*configurations.compile.map(::zipTree).toTypedArray())
- with(jar)
+ fun Jar.packageDependency(name: String, configure: ModuleDependency.() -> Unit) {
+ val configuration = project.configurations.compile.copyRecursive()
+
+ configuration.dependencies.removeIf {
+ if (it is ModuleDependency && it.name == name) {
+ it.configure()
+ false
+ } else true
+ }
+
+ from(*configuration.resolvedConfiguration.resolvedArtifacts
+ .map { it.file }
+ .map(::zipTree)
+ .toTypedArray())
}
- val shadowJar by getting(ShadowJar::class) {
- group = "artifacts"
- destinationDir = file("$rootDir/debug/plugins")
- baseName = "parcels2-shaded"
+ fun Jar.packageArtifacts(vararg names: String) {
+ val stream = PrintWriter(File("$rootDir/gradle-output.txt"))
+ from(*project.configurations.compile.resolvedConfiguration.resolvedArtifacts
+ .filter {
+ val id = it.moduleVersion.id
+ (id.name in names).also {
+ if (!it) stream.println("Not including artifact: ${id.group}:${id.name}")
+ }
+ }
+ .map { it.file }
+ .map(::zipTree)
+ .toTypedArray())
+ stream.flush()
+ }
- dependencies {
- exclude(dependency(files("../res/spigot-1.13-pre7.jar")))
- }
+ val serverDir = "$rootDir/debug"
- relocate("", "io.dico.parcels2.util.") {
- exclude("kotlin*")
- exclude("META-INF/*")
- exclude("logback*xml")
- exclude("plugin*yml")
- }
+ val jar by getting(Jar::class)
- relocate("kotlin", "kotlin")
+ val kotlinStdlibJar by creating(Jar::class) {
+ destinationDir = file("$serverDir/lib")
+ archiveName = "kotlin-stdlib.jar"
+ packageDependencies("kotlin-stdlib-jdk8")
}
- val relocateSnakeyamlJar by creating(ShadowJar::class) {
- group = "artifacts"
- destinationDir = file("$rootDir/debug/plugins")
- baseName = "parcels2-shaded"
- relocate("org.yaml", "shadow.org.yaml")
+ val shadowJar by getting(ShadowJar::class) {
+ relocate("", "")
+ }
+
+ val releaseJar by creating(ShadowJar::class) {
+ destinationDir = file("$serverDir/plugins")
+ baseName = "parcels2-release"
- from(*project.configurations.compile.map(::zipTree).toTypedArray())
with(jar)
+
+ packageArtifacts(
+ "jackson-core",
+ "jackson-databind",
+ "jackson-module-kotlin",
+ "jackson-annotations",
+ "jackson-dataformat-yaml",
+ "snakeyaml",
+
+ "slf4j-api",
+ "logback-core",
+ "logback-classic",
+
+ "h2",
+ "HikariCP",
+ "kotlinx-coroutines-core",
+ "kotlinx-coroutines-core-common",
+ "atomicfu-common",
+ "exposed",
+
+ "dicore3-core",
+ "dicore3-command",
+ "paranamer",
+
+ "trove4j",
+ "joda-time",
+ "annotations"
+ )
+
+ relocate("org.yaml.snakeyaml", "io.dico.parcels2.util.snakeyaml")
+
+ manifest.attributes["Class-Path"] = "lib/kotlin-stdlib.jar"
+ dependsOn(kotlinStdlibJar)
}
+
+}
+
+allprojects {
+ tasks.filter { it is Jar }.forEach { it.group = "artifacts" }
} \ No newline at end of file