Minor cleanup in Gradle plugin.
This commit is contained in:
+25
-34
@@ -36,24 +36,23 @@ import org.gradle.api.initialization.dsl.ScriptHandler
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
|
import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||||
import org.gradle.api.tasks.Copy
|
|
||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
import org.gradle.api.tasks.Delete
|
import org.gradle.api.tasks.Delete
|
||||||
import org.codehaus.groovy.runtime.MethodClosure
|
|
||||||
import groovy.lang.Closure
|
import groovy.lang.Closure
|
||||||
import org.gradle.api.artifacts.ProjectDependency
|
|
||||||
|
|
||||||
val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations"
|
val DEFAULT_ANNOTATIONS = "org.jebrains.kotlin.gradle.defaultAnnotations"
|
||||||
|
|
||||||
|
|
||||||
abstract class KotlinSourceSetProcessor<T : AbstractCompile>(val project: ProjectInternal,
|
abstract class KotlinSourceSetProcessor<T : AbstractCompile>(
|
||||||
val javaBasePlugin: JavaBasePlugin,
|
val project: ProjectInternal,
|
||||||
val sourceSet: SourceSet,
|
val javaBasePlugin: JavaBasePlugin,
|
||||||
val pluginName: String,
|
val sourceSet: SourceSet,
|
||||||
val compileTaskNameSuffix: String,
|
val pluginName: String,
|
||||||
val taskDescription: String,
|
val compileTaskNameSuffix: String,
|
||||||
val compilerClass: Class<T>) {
|
val taskDescription: String,
|
||||||
|
val compilerClass: Class<T>
|
||||||
|
) {
|
||||||
abstract protected fun doTargetSpecificProcessing()
|
abstract protected fun doTargetSpecificProcessing()
|
||||||
val logger = Logging.getLogger(this.javaClass)
|
val logger = Logging.getLogger(this.javaClass)
|
||||||
|
|
||||||
@@ -116,13 +115,14 @@ class Kotlin2JvmSourceSetProcessor(
|
|||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
javaBasePlugin: JavaBasePlugin,
|
javaBasePlugin: JavaBasePlugin,
|
||||||
sourceSet: SourceSet,
|
sourceSet: SourceSet,
|
||||||
val scriptHandler: ScriptHandler)
|
val scriptHandler: ScriptHandler
|
||||||
: KotlinSourceSetProcessor<KotlinCompile>(
|
) : KotlinSourceSetProcessor<KotlinCompile>(
|
||||||
project, javaBasePlugin, sourceSet,
|
project, javaBasePlugin, sourceSet,
|
||||||
pluginName = "kotlin",
|
pluginName = "kotlin",
|
||||||
compileTaskNameSuffix = "kotlin",
|
compileTaskNameSuffix = "kotlin",
|
||||||
taskDescription = "Compiles the $sourceSet.kotlin.",
|
taskDescription = "Compiles the $sourceSet.kotlin.",
|
||||||
compilerClass = javaClass()) {
|
compilerClass = javaClass()
|
||||||
|
) {
|
||||||
|
|
||||||
override fun doTargetSpecificProcessing() {
|
override fun doTargetSpecificProcessing() {
|
||||||
// store kotlin classes in separate directory. They will serve as class-path to java compiler
|
// store kotlin classes in separate directory. They will serve as class-path to java compiler
|
||||||
@@ -138,7 +138,6 @@ class Kotlin2JvmSourceSetProcessor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Kotlin2JsSourceSetProcessor(
|
class Kotlin2JsSourceSetProcessor(
|
||||||
project: ProjectInternal,
|
project: ProjectInternal,
|
||||||
javaBasePlugin: JavaBasePlugin,
|
javaBasePlugin: JavaBasePlugin,
|
||||||
@@ -149,18 +148,16 @@ class Kotlin2JsSourceSetProcessor(
|
|||||||
pluginName = "kotlin2js",
|
pluginName = "kotlin2js",
|
||||||
taskDescription = "Compiles the kotlin sources in $sourceSet to JavaScript.",
|
taskDescription = "Compiles the kotlin sources in $sourceSet to JavaScript.",
|
||||||
compileTaskNameSuffix = "kotlin2Js",
|
compileTaskNameSuffix = "kotlin2Js",
|
||||||
compilerClass = javaClass<Kotlin2JsCompile>()) {
|
compilerClass = javaClass<Kotlin2JsCompile>()
|
||||||
|
) {
|
||||||
|
|
||||||
val copyKotlinJsTaskName = sourceSet.getTaskName("copy", "kotlinJs")
|
val copyKotlinJsTaskName = sourceSet.getTaskName("copy", "kotlinJs")
|
||||||
val clean = project.getTasks().findByName("clean")
|
val clean = project.getTasks().findByName("clean")
|
||||||
val build = project.getTasks().findByName("build")
|
val build = project.getTasks().findByName("build")
|
||||||
|
|
||||||
val defaultKotlinDestinationDir = File(project.getBuildDir(), "kotlin2js/${sourceSetName}")
|
val defaultKotlinDestinationDir = File(project.getBuildDir(), "kotlin2js/${sourceSetName}")
|
||||||
private fun kotlinTaskDestinationDir(): File? = kotlinTask.kotlinDestinationDir
|
private fun kotlinTaskDestinationDir(): File? = kotlinTask.kotlinDestinationDir
|
||||||
private fun kotlinJsDestinationDir(): File? = if (kotlinTask.outputFile() == null) {
|
private fun kotlinJsDestinationDir(): File? = kotlinTask.outputFile()?.let { File(it).directory }
|
||||||
null
|
|
||||||
} else {
|
|
||||||
File(kotlinTask.outputFile()).directory
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun copyKotlinJsTaskOutput(): String? = if (kotlinJsDestinationDir() == null) {
|
private fun copyKotlinJsTaskOutput(): String? = if (kotlinJsDestinationDir() == null) {
|
||||||
null
|
null
|
||||||
@@ -233,11 +230,9 @@ abstract class AbstractKotlinPlugin [Inject] (val scriptHandler: ScriptHandler)
|
|||||||
open protected fun configureSourceSetDefaults(project: ProjectInternal,
|
open protected fun configureSourceSetDefaults(project: ProjectInternal,
|
||||||
javaBasePlugin: JavaBasePlugin,
|
javaBasePlugin: JavaBasePlugin,
|
||||||
javaPluginConvention: JavaPluginConvention) {
|
javaPluginConvention: JavaPluginConvention) {
|
||||||
javaPluginConvention.getSourceSets()?.all(object : Action<SourceSet> {
|
javaPluginConvention.getSourceSets()?.all(Action<SourceSet> { sourceSet ->
|
||||||
override fun execute(sourceSet: SourceSet?) {
|
if (sourceSet != null) {
|
||||||
if (sourceSet != null) {
|
buildSourceSetProcessor(project, javaBasePlugin, sourceSet).run()
|
||||||
buildSourceSetProcessor(project, javaBasePlugin, sourceSet).run()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -253,11 +248,7 @@ abstract class AbstractKotlinPlugin [Inject] (val scriptHandler: ScriptHandler)
|
|||||||
kdoc.setSource(mainSourceSet.getConvention().getExtensionsAsDynamicObject().getProperty("kotlin"))
|
kdoc.setSource(mainSourceSet.getConvention().getExtensionsAsDynamicObject().getProperty("kotlin"))
|
||||||
}
|
}
|
||||||
|
|
||||||
project.getTasks().withType(javaClass<KDoc>(), object : Action<KDoc> {
|
project.getTasks().withType(javaClass<KDoc>()) { it!!.destinationDir = File(javaPluginConvention.getDocsDir(), "kdoc") }
|
||||||
override fun execute(task: KDoc?) {
|
|
||||||
task!!.destinationDir = File(javaPluginConvention.getDocsDir(), "kdoc")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public val KDOC_TASK_NAME: String = "kdoc"
|
public val KDOC_TASK_NAME: String = "kdoc"
|
||||||
@@ -265,7 +256,7 @@ abstract class AbstractKotlinPlugin [Inject] (val scriptHandler: ScriptHandler)
|
|||||||
|
|
||||||
|
|
||||||
open class KotlinPlugin [Inject] (scriptHandler: ScriptHandler) : AbstractKotlinPlugin(scriptHandler) {
|
open class KotlinPlugin [Inject] (scriptHandler: ScriptHandler) : AbstractKotlinPlugin(scriptHandler) {
|
||||||
override fun buildSourceSetProcessor(project: ProjectInternal, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet): KotlinSourceSetProcessor<KotlinCompile> =
|
override fun buildSourceSetProcessor(project: ProjectInternal, javaBasePlugin: JavaBasePlugin, sourceSet: SourceSet) =
|
||||||
Kotlin2JvmSourceSetProcessor(project, javaBasePlugin, sourceSet, scriptHandler)
|
Kotlin2JvmSourceSetProcessor(project, javaBasePlugin, sourceSet, scriptHandler)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,7 +299,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler) : Plu
|
|||||||
|
|
||||||
(ext as ExtensionAware).getExtensions().add("kotlinOptions", K2JVMCompilerArguments())
|
(ext as ExtensionAware).getExtensions().add("kotlinOptions", K2JVMCompilerArguments())
|
||||||
|
|
||||||
project afterEvaluate { (project: Project?): Unit ->
|
project afterEvaluate { project ->
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
val testVariants = ext.getTestVariants()!!
|
val testVariants = ext.getTestVariants()!!
|
||||||
processVariants(testVariants, project, ext)
|
processVariants(testVariants, project, ext)
|
||||||
@@ -344,7 +335,7 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler) : Plu
|
|||||||
val buildTypeSourceSetName = AndroidGradleWrapper.getVariantName(variant)
|
val buildTypeSourceSetName = AndroidGradleWrapper.getVariantName(variant)
|
||||||
|
|
||||||
logger.debug("Variant build type is [$buildTypeSourceSetName]")
|
logger.debug("Variant build type is [$buildTypeSourceSetName]")
|
||||||
val buildTypeSourceSet: AndroidSourceSet? = sourceSets.findByName(buildTypeSourceSetName)
|
val buildTypeSourceSet = sourceSets.findByName(buildTypeSourceSetName)
|
||||||
|
|
||||||
val javaTask = variant.getJavaCompile()!!
|
val javaTask = variant.getJavaCompile()!!
|
||||||
val variantName = variant.getName()
|
val variantName = variant.getName()
|
||||||
@@ -444,7 +435,7 @@ open class GradleUtils(val scriptHandler: ScriptHandler, val project: ProjectInt
|
|||||||
val deps = coordinates map { dependencyHandler.create(it) }
|
val deps = coordinates map { dependencyHandler.create(it) }
|
||||||
val configuration = configurationsContainer.detachedConfiguration(*deps.copyToArray())
|
val configuration = configurationsContainer.detachedConfiguration(*deps.copyToArray())
|
||||||
|
|
||||||
return configuration.getResolvedConfiguration().getFiles({true})
|
return configuration.getResolvedConfiguration().getFiles { true }
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun kotlinPluginVersion(): String = project.getProperties()["kotlin.gradle.plugin.version"] as String
|
public fun kotlinPluginVersion(): String = project.getProperties()["kotlin.gradle.plugin.version"] as String
|
||||||
|
|||||||
+6
-18
@@ -10,7 +10,6 @@ import java.util.HashSet
|
|||||||
import org.jetbrains.kotlin.doc.KDocCompiler
|
import org.jetbrains.kotlin.doc.KDocCompiler
|
||||||
import org.gradle.api.tasks.TaskAction
|
import org.gradle.api.tasks.TaskAction
|
||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import java.util.ArrayList
|
|
||||||
import org.apache.commons.io.FilenameUtils
|
import org.apache.commons.io.FilenameUtils
|
||||||
import org.jetbrains.jet.cli.jvm.K2JVMCompiler
|
import org.jetbrains.jet.cli.jvm.K2JVMCompiler
|
||||||
import org.jetbrains.jet.cli.common.arguments.K2JVMCompilerArguments
|
import org.jetbrains.jet.cli.common.arguments.K2JVMCompilerArguments
|
||||||
@@ -26,21 +25,7 @@ import org.gradle.api.Project
|
|||||||
import org.jetbrains.jet.config.Services
|
import org.jetbrains.jet.config.Services
|
||||||
import org.jetbrains.jet.cli.js.K2JSCompiler
|
import org.jetbrains.jet.cli.js.K2JSCompiler
|
||||||
import org.jetbrains.jet.cli.common.arguments.K2JSCompilerArguments
|
import org.jetbrains.jet.cli.common.arguments.K2JSCompilerArguments
|
||||||
import org.jetbrains.k2js.config.MetaInfServices
|
|
||||||
import org.jetbrains.k2js.config.ClassPathLibraryDefintionsConfig
|
|
||||||
import org.jetbrains.jet.cli.common.CLIConfigurationKeys
|
|
||||||
import org.jetbrains.jet.config.CompilerConfiguration
|
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentUtil
|
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment
|
|
||||||
import com.intellij.openapi.Disposable
|
|
||||||
import com.intellij.openapi.util.Disposer
|
|
||||||
import org.jetbrains.k2js.config.EcmaVersion
|
|
||||||
import org.gradle.api.tasks.Copy
|
|
||||||
import org.gradle.api.Action
|
|
||||||
import org.gradle.api.internal.project.ProjectInternal
|
|
||||||
import groovy.lang.Closure
|
|
||||||
import org.codehaus.groovy.runtime.MethodClosure
|
import org.codehaus.groovy.runtime.MethodClosure
|
||||||
import org.gradle.api.DefaultTask
|
|
||||||
import org.jetbrains.jet.cli.common.arguments.CommonCompilerArguments
|
import org.jetbrains.jet.cli.common.arguments.CommonCompilerArguments
|
||||||
import org.jetbrains.jet.cli.common.CLICompiler
|
import org.jetbrains.jet.cli.common.CLICompiler
|
||||||
import com.intellij.ide.highlighter.JavaFileType
|
import com.intellij.ide.highlighter.JavaFileType
|
||||||
@@ -169,7 +154,8 @@ public open class KotlinCompile() : AbstractKotlinCompile<K2JVMCompilerArguments
|
|||||||
args.noParamAssertions = kotlinOptions.noParamAssertions
|
args.noParamAssertions = kotlinOptions.noParamAssertions
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getJavaSourceRoots(): Set<File> = getSource()
|
private fun getJavaSourceRoots(): Set<File> =
|
||||||
|
getSource()
|
||||||
.filter { isJava(it) }
|
.filter { isJava(it) }
|
||||||
.map { findSrcDirRoot(it) }
|
.map { findSrcDirRoot(it) }
|
||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
@@ -177,6 +163,7 @@ public open class KotlinCompile() : AbstractKotlinCompile<K2JVMCompilerArguments
|
|||||||
|
|
||||||
override fun afterCompileHook(args: K2JVMCompilerArguments) {
|
override fun afterCompileHook(args: K2JVMCompilerArguments) {
|
||||||
getLogger().debug("Copying resulting files to classes")
|
getLogger().debug("Copying resulting files to classes")
|
||||||
|
|
||||||
// Copy kotlin classes to all classes directory
|
// Copy kotlin classes to all classes directory
|
||||||
val outputDirFile = File(args.destination!!)
|
val outputDirFile = File(args.destination!!)
|
||||||
if (outputDirFile.exists()) {
|
if (outputDirFile.exists()) {
|
||||||
@@ -195,7 +182,7 @@ public open class Kotlin2JsCompile() : AbstractKotlinCompile<K2JSCompilerArgumen
|
|||||||
}
|
}
|
||||||
|
|
||||||
public fun addLibraryFiles(vararg fs: String) {
|
public fun addLibraryFiles(vararg fs: String) {
|
||||||
kotlinOptions.libraryFiles = (kotlinOptions.libraryFiles + fs).copyToArray()
|
kotlinOptions.libraryFiles = (kotlinOptions.libraryFiles + (fs as Array<String>)).copyToArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun addLibraryFiles(vararg fs: File) {
|
public fun addLibraryFiles(vararg fs: File) {
|
||||||
@@ -212,6 +199,7 @@ public open class Kotlin2JsCompile() : AbstractKotlinCompile<K2JSCompilerArgumen
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun populateTargetSpecificArgs(args: K2JSCompilerArguments) {
|
override fun populateTargetSpecificArgs(args: K2JSCompilerArguments) {
|
||||||
|
args.noStdlib = true
|
||||||
args.outputFile = outputFile()
|
args.outputFile = outputFile()
|
||||||
args.outputPrefix = kotlinOptions.outputPrefix
|
args.outputPrefix = kotlinOptions.outputPrefix
|
||||||
args.outputPostfix = kotlinOptions.outputPostfix
|
args.outputPostfix = kotlinOptions.outputPostfix
|
||||||
@@ -220,7 +208,7 @@ public open class Kotlin2JsCompile() : AbstractKotlinCompile<K2JSCompilerArgumen
|
|||||||
args.sourceMap = kotlinOptions.sourceMap
|
args.sourceMap = kotlinOptions.sourceMap
|
||||||
|
|
||||||
if (args.outputFile == null) {
|
if (args.outputFile == null) {
|
||||||
throw GradleException("${getName()}.kotlinOptions.outputFile must be set to a string.")
|
throw GradleException("${getName()}.kotlinOptions.outputFile should be specified.")
|
||||||
}
|
}
|
||||||
|
|
||||||
val outputDir = File(args.outputFile).directory
|
val outputDir = File(args.outputFile).directory
|
||||||
|
|||||||
Reference in New Issue
Block a user