
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.isNotRootProject
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) }
if (project.isNotRootProject) return
project.gradle.taskGraph.afterTask { task ->
task.outputs.files.takeIf { it !is FileTree }?.forEach(ArtifactsCache::invalidate)
when (task) {
is AbstractCompile -> ArtifactsCache.invalidate(task.destinationDir)
is AbstractArchiveTask -> ArtifactsCache.invalidate(task.archivePath)
is Copy -> ArtifactsCache.invalidate(task.destinationDir)
}
}
}
}