All Downloads are FREE. Search and download functionalities are using the official Maven repository.

name.remal.gradle_plugins.dsl.artifact.ArtifactsCacheCleanerPlugin.kt Maven / Gradle / Ivy

There is a newer version: 1.9.2
Show 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.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)
            }
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy