Remove com.intellij usages from Gradle plugin
This commit is contained in:
+3
-3
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
|||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
|
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
import org.jetbrains.kotlin.config.Services
|
import org.jetbrains.kotlin.config.Services
|
||||||
import org.jetbrains.kotlin.daemon.client.CompileServiceSession
|
import org.jetbrains.kotlin.daemon.client.CompileServiceSession
|
||||||
@@ -40,6 +39,7 @@ import org.jetbrains.kotlin.gradle.utils.relativeToRoot
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
||||||
import org.jetbrains.kotlin.gradle.tasks.InspectClassesForMultiModuleIC
|
import org.jetbrains.kotlin.gradle.tasks.InspectClassesForMultiModuleIC
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.newTmpFile
|
||||||
import org.jetbrains.kotlin.incremental.*
|
import org.jetbrains.kotlin.incremental.*
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -404,7 +404,7 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil
|
|||||||
val log = project.logger
|
val log = project.logger
|
||||||
if (clientIsAliveFlagFile == null || !clientIsAliveFlagFile!!.exists()) {
|
if (clientIsAliveFlagFile == null || !clientIsAliveFlagFile!!.exists()) {
|
||||||
val projectName = project.rootProject.name.normalizeForFlagFile()
|
val projectName = project.rootProject.name.normalizeForFlagFile()
|
||||||
clientIsAliveFlagFile = FileUtil.createTempFile("kotlin-compiler-in-$projectName-", ".alive", /*deleteOnExit =*/ true)
|
clientIsAliveFlagFile = newTmpFile(prefix = "kotlin-compiler-in-$projectName-", suffix = ".alive")
|
||||||
log.kotlinDebug { CREATED_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.canonicalPath }
|
log.kotlinDebug { CREATED_CLIENT_FILE_PREFIX + clientIsAliveFlagFile!!.canonicalPath }
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -429,7 +429,7 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil
|
|||||||
val log = project.logger
|
val log = project.logger
|
||||||
if (sessionFlagFile == null || !sessionFlagFile!!.exists()) {
|
if (sessionFlagFile == null || !sessionFlagFile!!.exists()) {
|
||||||
val sessionFilesDir = sessionsDir(project).apply { mkdirs() }
|
val sessionFilesDir = sessionsDir(project).apply { mkdirs() }
|
||||||
sessionFlagFile = FileUtil.createTempFile(sessionFilesDir, "kotlin-compiler-", ".salive", /*deleteOnExit =*/ true)
|
sessionFlagFile = newTmpFile(prefix = "kotlin-compiler-", suffix = ".salive", directory = sessionFilesDir)
|
||||||
log.kotlinDebug { CREATED_SESSION_FILE_PREFIX + sessionFlagFile!!.relativeToRoot(project) }
|
log.kotlinDebug { CREATED_SESSION_FILE_PREFIX + sessionFlagFile!!.relativeToRoot(project) }
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
+5
-8
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.internal
|
package org.jetbrains.kotlin.gradle.internal
|
||||||
|
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
|
||||||
import org.gradle.api.artifacts.Configuration
|
import org.gradle.api.artifacts.Configuration
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
@@ -27,6 +26,7 @@ import org.jetbrains.kotlin.gradle.tasks.FilteringSourceRootsContainer
|
|||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
import org.jetbrains.kotlin.gradle.tasks.SourceRoots
|
import org.jetbrains.kotlin.gradle.tasks.SourceRoots
|
||||||
import org.jetbrains.kotlin.gradle.incremental.ChangedFiles
|
import org.jetbrains.kotlin.gradle.incremental.ChangedFiles
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||||
import org.jetbrains.kotlin.incremental.classpathAsList
|
import org.jetbrains.kotlin.incremental.classpathAsList
|
||||||
import org.jetbrains.kotlin.incremental.destinationAsFile
|
import org.jetbrains.kotlin.incremental.destinationAsFile
|
||||||
import org.jetbrains.kotlin.gradle.utils.pathsAsStringRelativeTo
|
import org.jetbrains.kotlin.gradle.utils.pathsAsStringRelativeTo
|
||||||
@@ -62,13 +62,10 @@ open class KaptGenerateStubsTask : KotlinCompile() {
|
|||||||
super.setSource(sourceRootsContainer.set(sources))
|
super.setSource(sourceRootsContainer.set(sources))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isSourceRootAllowed(source: File): Boolean {
|
private fun isSourceRootAllowed(source: File): Boolean =
|
||||||
fun File.isInside(parent: File) = FileUtil.isAncestor(parent, this, /* strict = */ false)
|
!destinationDir.isParentOf(source) &&
|
||||||
|
!stubsDir.isParentOf(source) &&
|
||||||
return !source.isInside(destinationDir) &&
|
!generatedSourcesDir.isParentOf(source)
|
||||||
!source.isInside(stubsDir) &&
|
|
||||||
!source.isInside(generatedSourcesDir)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun setupCompilerArgs(args: K2JVMCompilerArguments, defaultsOnly: Boolean) {
|
override fun setupCompilerArgs(args: K2JVMCompilerArguments, defaultsOnly: Boolean) {
|
||||||
kotlinCompileTask.setupCompilerArgs(args)
|
kotlinCompileTask.setupCompilerArgs(args)
|
||||||
|
|||||||
+3
-4
@@ -1,7 +1,5 @@
|
|||||||
package org.jetbrains.kotlin.gradle.internal
|
package org.jetbrains.kotlin.gradle.internal
|
||||||
|
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
|
||||||
import com.intellij.openapi.util.text.StringUtil.compareVersionNumbers
|
|
||||||
import org.gradle.api.GradleException
|
import org.gradle.api.GradleException
|
||||||
import org.gradle.api.artifacts.Configuration
|
import org.gradle.api.artifacts.Configuration
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
@@ -11,9 +9,11 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
|||||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment
|
import org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment
|
||||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
||||||
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.compareVersionNumbers
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PLUGIN_CLASSPATH_CONFIGURATION_NAME
|
import org.jetbrains.kotlin.gradle.plugin.PLUGIN_CLASSPATH_CONFIGURATION_NAME
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.isJavaFile
|
import org.jetbrains.kotlin.gradle.utils.isJavaFile
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||||
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -101,8 +101,7 @@ open class KaptTask : ConventionTask(), CompilerArgumentAwareWithInput<K2JVMComp
|
|||||||
.filterTo(HashSet(), ::isRootAllowed)
|
.filterTo(HashSet(), ::isRootAllowed)
|
||||||
|
|
||||||
private fun isRootAllowed(file: File): Boolean =
|
private fun isRootAllowed(file: File): Boolean =
|
||||||
!FileUtil.isAncestor(destinationDir, file, /* strict = */ false) &&
|
!destinationDir.isParentOf(file) && !classesDir.isParentOf(file)
|
||||||
!FileUtil.isAncestor(classesDir, file, /* strict = */ false)
|
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
fun compile() {
|
fun compile() {
|
||||||
|
|||||||
-6
@@ -20,9 +20,6 @@ import org.gradle.BuildAdapter
|
|||||||
import org.gradle.BuildResult
|
import org.gradle.BuildResult
|
||||||
import org.gradle.api.invocation.Gradle
|
import org.gradle.api.invocation.Gradle
|
||||||
import org.gradle.api.logging.Logging
|
import org.gradle.api.logging.Logging
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
|
||||||
import com.intellij.openapi.vfs.impl.ZipHandler
|
|
||||||
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
|
|
||||||
import org.jetbrains.kotlin.compilerRunner.DELETED_SESSION_FILE_PREFIX
|
import org.jetbrains.kotlin.compilerRunner.DELETED_SESSION_FILE_PREFIX
|
||||||
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||||
@@ -149,13 +146,10 @@ internal class CompilerServicesCleanup() {
|
|||||||
if (isWindows) {
|
if (isWindows) {
|
||||||
cleanJarCache()
|
cleanJarCache()
|
||||||
}
|
}
|
||||||
|
|
||||||
(KotlinCoreEnvironment.applicationEnvironment?.jarFileSystem as? CoreJarFileSystem)?.clearHandlersCache()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun cleanJarCache() {
|
private fun cleanJarCache() {
|
||||||
log.kotlinDebug("Clean JAR cache")
|
log.kotlinDebug("Clean JAR cache")
|
||||||
ZipHandler.clearFileAccessorCache()
|
|
||||||
log.kotlinDebug("JAR cache cleared")
|
log.kotlinDebug("JAR cache cleared")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-8
@@ -3,9 +3,6 @@ package org.jetbrains.kotlin.gradle.plugin
|
|||||||
import com.android.build.gradle.BaseExtension
|
import com.android.build.gradle.BaseExtension
|
||||||
import com.android.build.gradle.BasePlugin
|
import com.android.build.gradle.BasePlugin
|
||||||
import com.android.builder.model.SourceProvider
|
import com.android.builder.model.SourceProvider
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
|
||||||
import com.intellij.openapi.util.text.StringUtil.compareVersionNumbers
|
|
||||||
import com.intellij.util.ReflectionUtil
|
|
||||||
import groovy.lang.Closure
|
import groovy.lang.Closure
|
||||||
import org.gradle.api.*
|
import org.gradle.api.*
|
||||||
import org.gradle.api.artifacts.Configuration
|
import org.gradle.api.artifacts.Configuration
|
||||||
@@ -218,10 +215,8 @@ internal class Kotlin2JvmSourceSetProcessor(
|
|||||||
internal fun SourceSetOutput.tryAddClassesDir(
|
internal fun SourceSetOutput.tryAddClassesDir(
|
||||||
classesDirProvider: () -> FileCollection
|
classesDirProvider: () -> FileCollection
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val getClassesDirs = ReflectionUtil.findMethod(
|
val getClassesDirs = javaClass.methods.firstOrNull { it.name == "getClassesDirs" && it.parameterCount == 0 }
|
||||||
javaClass.methods.asList(),
|
?: return false
|
||||||
"getClassesDirs"
|
|
||||||
) ?: return false
|
|
||||||
|
|
||||||
val classesDirs = getClassesDirs(this) as? ConfigurableFileCollection
|
val classesDirs = getClassesDirs(this) as? ConfigurableFileCollection
|
||||||
?: return false
|
?: return false
|
||||||
@@ -262,7 +257,7 @@ internal class Kotlin2JsSourceSetProcessor(
|
|||||||
kotlinTask.kotlinOptions.outputFile = kotlinTask.outputFile.absolutePath
|
kotlinTask.kotlinOptions.outputFile = kotlinTask.outputFile.absolutePath
|
||||||
val outputDir = kotlinTask.outputFile.parentFile
|
val outputDir = kotlinTask.outputFile.parentFile
|
||||||
|
|
||||||
if (FileUtil.isAncestor(outputDir, project.rootDir, false))
|
if (outputDir.isParentOf(project.rootDir))
|
||||||
throw InvalidUserDataException(
|
throw InvalidUserDataException(
|
||||||
"The output directory '$outputDir' (defined by outputFile of $kotlinTask) contains or " +
|
"The output directory '$outputDir' (defined by outputFile of $kotlinTask) contains or " +
|
||||||
"matches the project root directory '${project.rootDir}'.\n" +
|
"matches the project root directory '${project.rootDir}'.\n" +
|
||||||
|
|||||||
+2
-2
@@ -3,10 +3,10 @@ package org.jetbrains.kotlin.gradle.tasks
|
|||||||
import org.gradle.api.file.FileTree
|
import org.gradle.api.file.FileTree
|
||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import org.gradle.api.logging.Logger
|
import org.gradle.api.logging.Logger
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
||||||
import org.jetbrains.kotlin.gradle.utils.isJavaFile
|
import org.jetbrains.kotlin.gradle.utils.isJavaFile
|
||||||
import org.jetbrains.kotlin.gradle.utils.isKotlinFile
|
import org.jetbrains.kotlin.gradle.utils.isKotlinFile
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ internal sealed class SourceRoots(val kotlinSourceFiles: List<File>) {
|
|||||||
|
|
||||||
for (sourceDir in sourceDirs) {
|
for (sourceDir in sourceDirs) {
|
||||||
for (sourceRoot in allSourceRoots) {
|
for (sourceRoot in allSourceRoots) {
|
||||||
if (FileUtil.isAncestor(sourceRoot, sourceDir, /* strict = */false)) {
|
if (sourceRoot.isParentOf(sourceDir)) {
|
||||||
resultRoots.add(sourceRoot)
|
resultRoots.add(sourceRoot)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -20,8 +20,8 @@ import org.gradle.api.DefaultTask
|
|||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
||||||
import org.gradle.api.tasks.incremental.InputFileDetails
|
import org.gradle.api.tasks.incremental.InputFileDetails
|
||||||
import com.intellij.openapi.util.io.FileUtil.isAncestor
|
|
||||||
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
import org.jetbrains.kotlin.gradle.plugin.kotlinDebug
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.ObjectInputStream
|
import java.io.ObjectInputStream
|
||||||
import java.io.ObjectOutputStream
|
import java.io.ObjectOutputStream
|
||||||
@@ -175,7 +175,7 @@ internal open class SyncOutputTask : DefaultTask() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun File.siblingInJavaDir(baseDir: File? = null): File {
|
private fun File.siblingInJavaDir(baseDir: File? = null): File {
|
||||||
val base = baseDir ?: classesDirs.find { isAncestor(it, this, true) }!!
|
val base = baseDir ?: classesDirs.find { it.isParentOf(this, strict = true) }!!
|
||||||
return File(javaOutputDir, this.relativeTo(base).path)
|
return File(javaOutputDir, this.relativeTo(base).path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.tasks
|
package org.jetbrains.kotlin.gradle.tasks
|
||||||
|
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
@@ -35,6 +34,7 @@ import org.jetbrains.kotlin.gradle.internal.prepareCompilerArguments
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.ParsedGradleVersion
|
import org.jetbrains.kotlin.gradle.utils.ParsedGradleVersion
|
||||||
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
import org.jetbrains.kotlin.gradle.utils.toSortedPathsArray
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isParentOf
|
||||||
import org.jetbrains.kotlin.incremental.*
|
import org.jetbrains.kotlin.incremental.*
|
||||||
import org.jetbrains.kotlin.utils.LibraryUtils
|
import org.jetbrains.kotlin.utils.LibraryUtils
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -416,7 +416,7 @@ open class KotlinCompile : AbstractKotlinCompile<K2JVMCompilerArguments>(), Kotl
|
|||||||
it is AbstractCompile &&
|
it is AbstractCompile &&
|
||||||
it !is JavaCompile &&
|
it !is JavaCompile &&
|
||||||
it !is AbstractKotlinCompile<*> &&
|
it !is AbstractKotlinCompile<*> &&
|
||||||
FileUtil.isAncestor(javaOutputDir!!, it.destinationDir, /* strict = */ false)
|
javaOutputDir!!.isParentOf(it.destinationDir)
|
||||||
} as? AbstractCompile
|
} as? AbstractCompile
|
||||||
|
|
||||||
if (illegalTask != null) {
|
if (illegalTask != null) {
|
||||||
|
|||||||
+17
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.gradle.utils
|
|||||||
|
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.nio.file.Paths
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
internal fun File.isJavaFile() =
|
internal fun File.isJavaFile() =
|
||||||
@@ -32,3 +33,19 @@ internal fun File.relativeToRoot(project: Project): String =
|
|||||||
|
|
||||||
internal fun Iterable<File>.toSortedPathsArray(): Array<String> =
|
internal fun Iterable<File>.toSortedPathsArray(): Array<String> =
|
||||||
map { it.canonicalPath }.toTypedArray().also { Arrays.sort(it) }
|
map { it.canonicalPath }.toTypedArray().also { Arrays.sort(it) }
|
||||||
|
|
||||||
|
internal fun newTmpFile(prefix: String, suffix: String? = null, directory: File? = null, deleteOnExit: Boolean = true) =
|
||||||
|
File.createTempFile(prefix, suffix, directory).apply {
|
||||||
|
if (deleteOnExit) deleteOnExit()
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun File.isParentOf(childCandidate: File, strict: Boolean = false): Boolean {
|
||||||
|
val parentPath = Paths.get(this.absolutePath).normalize()
|
||||||
|
val childCandidatePath = Paths.get(childCandidate.absolutePath).normalize()
|
||||||
|
|
||||||
|
return if (strict) {
|
||||||
|
childCandidatePath.startsWith(parentPath) && parentPath != childCandidate
|
||||||
|
} else {
|
||||||
|
childCandidatePath.startsWith(parentPath)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user