name.remal.gradle_plugins.dsl.artifact.ArtifactsCacheCleanerPlugin.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Remal Gradle plugins: gradle-plugins-kotlin-dsl
package name.remal.gradle_plugins.dsl.artifact
import name.remal.KotlinAllOpen
import name.remal.gradle_plugins.dsl.extensions.applyPlugin
import name.remal.gradle_plugins.dsl.extensions.doSetup
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.file.FileTree
import org.gradle.api.tasks.Copy
import org.gradle.api.tasks.bundling.AbstractArchiveTask
import org.gradle.api.tasks.compile.AbstractCompile
@KotlinAllOpen
class ArtifactsCacheCleanerPlugin : Plugin {
override fun apply(project: Project) {
project.rootProject.allprojects { it.applyPlugin(ArtifactsCacheCleanerPlugin::class.java) }
project.tasks.all {
it.doSetup(Int.MAX_VALUE) {
it.doLast {
when (it) {
is AbstractCompile -> ArtifactsCache.invalidate(it.destinationDir)
is AbstractArchiveTask -> ArtifactsCache.invalidate(it.archivePath)
is Copy -> ArtifactsCache.invalidate(it.destinationDir)
else -> it.outputs.files.let { outputFiles ->
if (outputFiles !is FileTree) {
outputFiles.files.forEach(ArtifactsCache::invalidate)
}
}
}
}
}
}
}
}