1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00
kobalt/tmp/Build.kt
2015-12-18 02:27:44 +04:00

190 lines
5.6 KiB
Kotlin

import com.beust.kobalt.TaskResult
import com.beust.kobalt.api.License
import com.beust.kobalt.api.Project
import com.beust.kobalt.api.Scm
import com.beust.kobalt.api.annotation.Task
import com.beust.kobalt.homeDir
import com.beust.kobalt.plugin.application.application
import com.beust.kobalt.plugin.java.javaCompiler
import com.beust.kobalt.plugin.java.javaProject
import com.beust.kobalt.plugin.kotlin.kotlinCompiler
import com.beust.kobalt.plugin.kotlin.kotlinProject
import com.beust.kobalt.plugin.packaging.assemble
import com.beust.kobalt.plugin.publish.github
import com.beust.kobalt.plugin.publish.jcenter
import com.beust.kobalt.repos
import com.beust.kobalt.test
import java.io.File
import java.nio.file.Files
import java.nio.file.Paths
import java.nio.file.StandardCopyOption
val r = repos("http://dl.bintray.com/kotlin/kotlinx.dom")
val wrapper = javaProject {
name = "kobalt-wrapper"
version = readVersion()
directory = "modules/wrapper"
javaCompiler {
args("-source", "1.7", "-target", "1.7")
}
assemble {
jar {
name = projectName + ".jar"
manifest {
attributes("Main-Class", "com.beust.kobalt.wrapper.Main")
}
}
}
application {
mainClass = "com.beust.kobalt.wrapper.Main"
}
}
val kobaltPluginApi = kotlinProject {
name = "kobalt-plugin-api"
group = "com.beust"
artifactId = name
version = readVersion()
directory = "modules/kobalt-plugin-api"
description = "A build system in Kotlin"
url = "http://beust.com/kobalt"
licenses = arrayListOf(License("Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0"))
scm = Scm(url = "http://github.com/cbeust/kobalt",
connection = "https://github.com/cbeust/kobalt.git",
developerConnection = "git@github.com:cbeust/kobalt.git")
dependenciesTest {
compile("org.testng:testng:6.9.9")
}
dependencies {
compile("org.jetbrains.kotlinx:kotlinx.dom:0.0.4",
"com.squareup.okhttp:okhttp:2.5.0",
"com.squareup.okio:okio:1.6.0",
"com.google.inject:guice:4.0",
"com.google.inject.extensions:guice-assistedinject:4.0",
"javax.inject:javax.inject:1",
"com.google.guava:guava:19.0-rc2",
"org.apache.maven:maven-model:3.3.3",
"io.reactivex:rxjava:1.0.16",
"com.google.code.gson:gson:2.4",
"com.squareup.retrofit:retrofit:1.9.0",
"com.beust:jcommander:1.48"
)
}
assemble {
mavenJars {
fatJar = true
manifest {
attributes("Main-Class", "com.beust.kobalt.MainKt")
}
}
}
// install {
// libDir = "lib-test"
// }
test {
args("-log", "1", "src/test/resources/testng.xml")
}
kotlinCompiler {
args("-nowarn")
}
jcenter {
publish = true
}
}
val kobaltApp = kotlinProject(kobaltPluginApi, wrapper) {
name = "kobalt"
group = "com.beust"
artifactId = name
version = readVersion()
dependencies {
// Used by the plugins
compile("com.android.tools.build:builder:2.0.0-alpha3",
"org.jetbrains.kotlin:kotlin-compiler-embeddable:1.0.0-beta-3595",
"org.jetbrains.dokka:dokka-fatjar:0.9.3")
// Used by the main app
compile("com.github.spullara.mustache.java:compiler:0.9.1",
"com.squareup.okhttp:okhttp:2.5.0",
"javax.inject:javax.inject:1",
"com.google.inject:guice:4.0",
"com.google.inject.extensions:guice-assistedinject:4.0",
"com.beust:jcommander:1.48",
"com.squareup.retrofit:retrofit:1.9.0",
"org.apache.maven:maven-model:3.3.3",
"org.codehaus.plexus:plexus-utils:3.0.22")
}
dependenciesTest {
compile("org.testng:testng:6.9.9")
}
assemble {
mavenJars {
fatJar = true
manifest {
attributes("Main-Class", "com.beust.kobalt.MainKt")
}
}
zip {
include("kobaltw")
include(from("$buildDirectory/libs"), to("kobalt/wrapper"),
"$projectName-$version.jar")
include(from("modules/wrapper/$buildDirectory/libs"), to("kobalt/wrapper"),
"$projectName-wrapper.jar")
}
}
kotlinCompiler {
args("-nowarn")
}
jcenter {
publish = true
}
github {
file("$buildDirectory/libs/$name-$version.zip", "$name/$version/$name-$version.zip")
}
}
fun readVersion() : String {
val p = java.util.Properties()
var localFile = java.io.File("src/main/resources/kobalt.properties")
if (! localFile.exists()) {
localFile = File(homeDir("kotlin", "kobalt", "src/main/resources/kobalt.properties"))
}
p.load(java.io.FileReader(localFile))
return p.getProperty("kobalt.version")
}
@Task(name = "copyVersionForWrapper", runBefore = arrayOf("assemble"), runAfter = arrayOf("compile"), description = "")
fun taskCopyVersionForWrapper(project: Project) : TaskResult {
if (project.name == "kobalt-wrapper") {
val toString = "modules/wrapper/kobaltBuild/classes"
File(toString).mkdirs()
val from = Paths.get("src/main/resources/kobalt.properties")
val to = Paths.get("$toString/kobalt.properties")
Files.copy(from,
to,
StandardCopyOption.REPLACE_EXISTING)
}
return TaskResult()
}