main.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
The newest version!
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.archivePathCompatible
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 -> task.destinationDirectory.asFile.orNull?.let(ArtifactsCache::invalidate)
is AbstractArchiveTask -> ArtifactsCache.invalidate(task.archivePathCompatible)
is Copy -> ArtifactsCache.invalidate(task.destinationDir)
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy