Share kotlin version config between buildSrc and project (#353)

* Share kotlin version config between buildSrc and project
* Use built-in Kotlin MessageCollector
This commit is contained in:
Gary Tierney
2017-09-16 02:39:34 +01:00
committed by Major
parent cb14c32b71
commit b32b98eb86
6 changed files with 25 additions and 33 deletions
+1 -3
View File
@@ -3,9 +3,7 @@ allprojects {
version = '0.0.1' version = '0.0.1'
} }
ext { apply from: 'properties.gradle'
kotlinVersion = '1.1.2-4'
}
subprojects { subprojects {
apply plugin: 'java' apply plugin: 'java'
+1 -3
View File
@@ -1,9 +1,7 @@
apply plugin: 'kotlin' apply plugin: 'kotlin'
buildscript { buildscript {
ext { apply from: '../properties.gradle'
kotlinVersion = '1.1.2-4'
}
repositories { repositories {
mavenCentral() mavenCentral()
@@ -1,39 +1,28 @@
package org.apollo.build.compile package org.apollo.build.compile
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.* import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
import org.jetbrains.kotlin.codegen.CompilationException import org.jetbrains.kotlin.codegen.CompilationException
import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer
import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.addKotlinSourceRoot
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
import java.io.File import java.io.File
import java.lang.management.ManagementFactory import java.lang.management.ManagementFactory
import java.net.URISyntaxException import java.net.URISyntaxException
import java.net.URLClassLoader import java.net.URLClassLoader
import java.nio.file.* import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.StandardOpenOption
import java.util.* import java.util.*
class KotlinMessageCollector : MessageCollector {
override fun clear() {
}
override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageLocation) {
if (severity.isError) {
println("${location.path}:${location.line}-${location.column}: $message")
println(">>> ${location.lineContent}")
}
}
override fun hasErrors(): Boolean {
return false
}
}
data class KotlinCompilerResult(val fqName: String, val outputPath: Path) data class KotlinCompilerResult(val fqName: String, val outputPath: Path)
class KotlinScriptCompiler { class KotlinScriptCompiler {
@@ -87,7 +76,7 @@ class KotlinScriptCompiler {
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition) configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
configuration.put(JVMConfigurationKeys.CONTENT_ROOTS, classpath.map { JvmClasspathRoot(it) }) configuration.put(JVMConfigurationKeys.CONTENT_ROOTS, classpath.map { JvmClasspathRoot(it) })
configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true) configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, KotlinMessageCollector()) configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
configuration.copy() configuration.copy()
return configuration return configuration
@@ -1,11 +1,14 @@
package org.apollo.build.tasks package org.apollo.build.tasks
import org.apollo.build.compile.KotlinMessageCollector
import org.apollo.build.compile.KotlinScriptCompiler import org.apollo.build.compile.KotlinScriptCompiler
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.* import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.incremental.IncrementalTaskInputs import org.gradle.api.tasks.incremental.IncrementalTaskInputs
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
import java.io.File import java.io.File
open class KotlinScriptCompileTask : DefaultTask() { open class KotlinScriptCompileTask : DefaultTask() {
@@ -29,7 +32,8 @@ open class KotlinScriptCompileTask : DefaultTask() {
} }
val classpath = compileClasspath!!.files val classpath = compileClasspath!!.files
val compiler = KotlinScriptCompiler(scriptDefinitionClass!!, classpath, KotlinMessageCollector()) val messageCollector = PrintingMessageCollector(System.err, MessageRenderer.PLAIN_RELATIVE_PATHS, true);
val compiler = KotlinScriptCompiler(scriptDefinitionClass!!, classpath, messageCollector)
inputs.outOfDate { inputs.outOfDate {
removeBinariesFor(it.file) removeBinariesFor(it.file)
@@ -3,7 +3,7 @@ import org.apollo.game.model.entity.Npc
start { world -> start { world ->
Spawns.list.forEach { Spawns.list.forEach {
val definition = if (it.id != null) NpcDefinition.lookup(it.id) else lookup_npc(it.name) val definition = if (it.id != null) NpcDefinition.lookup(it.id!!) else lookup_npc(it.name)
if (definition == null) { if (definition == null) {
throw IllegalArgumentException("Invalid NPC name or ID ${it.name}, ${it.id}") throw IllegalArgumentException("Invalid NPC name or ID ${it.name}, ${it.id}")
} }
+3
View File
@@ -0,0 +1,3 @@
ext {
kotlinVersion = '1.1.4-3'
}