копирование плагина gradle без исключений по умолчанию - PullRequest
0 голосов
/ 17 октября 2019

Я хочу получить некоторый артефакт зависимости и скопировать содержимое в определенное место.
В целом это работает хорошо, но не для файлов, называемых, например, .gitignore.
Я обнаружил, что это исключения по умолчанию.

Как я могу отключить исключение по умолчанию, используя Java-Gradle-API в моем коде плагина?

project.copy( spec -> {
    spec.from (project.zipTree(artifact.getFile()));
    spec.into( tf.toFile());
    //spec.setExcludes(Collections.emptyList()); // does not work
});

Также я попытался установить setExclude в from / into copyspec.

Фрэнк

1 Ответ

0 голосов
/ 17 октября 2019

Я нашел решение, но мне оно не нравится, потому что оно изменяет глобально видимый defaultExcludes:

private static void withoutDefaultExcludes( Runnable r ) {
    String[] defaultExcludes = org.apache.tools.ant.DirectoryScanner.getDefaultExcludes();
    try {
        for( String defaultExclude : defaultExcludes) {
            org.apache.tools.ant.DirectoryScanner.removeDefaultExclude(defaultExclude);
        }

        r.run();

    }
    finally {
        for( String defaultExclude : defaultExcludes) {
            org.apache.tools.ant.DirectoryScanner.addDefaultExclude(defaultExclude);
        }
    }
}

withoutDefaultExcludes( () -> {
    project.copy( spec -> {
        spec.from (project.zipTree(artifact.getFile()));
        spec.into( tf.toFile());
    });
});
...