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.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)
                            }
                        }
                    }
                }
            }
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy