Получить jar-ресурсы от TaskAction - PullRequest
0 голосов
/ 05 декабря 2018

Я создаю подключаемый модуль gradle, и для одной из задач требуются файлы XML-ресурсов, которые находятся внутри некоторых JAR-файлов зависимостей.

Как получить доступ к файлам зависимостей ресурсов внутри метода, аннотированного @TaskAction?

open class MyTask : DefaultTask() {

    @InputDirectory
    var projectResources: File = project.file("${project.projectDir}/src/main/resources")

    @TaskAction
    fun perform() {

        // I can iterate over the project resources files like that
        projectResources.walk().forEach { file -> 
            doStuffWithFile(file) 
        }

        // TODO but how to interate over resources files of dependencies?

    }
}

1 Ответ

0 голосов
/ 05 декабря 2018

Я понял:

open class MyTask : DefaultTask() {

    @InputDirectory
    var projectResources: File = project.file("${project.projectDir}/src/main/resources")

    @TaskAction
    fun perform() {

        // I can iterate over the project resources files like that
        projectResources.walk().forEach { file -> 
            doStuffWithFile(file) 
        }

        // Get the default configuration that contains the dependency jars and unzip it
        project.configurations.getAt("default")
            .filter { it.name.endsWith("jar") }
            .map { project.zipTree(it) }
            .flatten()
            .forEach { file ->
                doStuffWithFile(file)
            }
    }
}
...