没有默认值的 gradle 插件复制排除



我想获取一些依赖项工件并将内容复制到特定位置。
这通常效果很好,但不适用于例如.gitignore.
我发现这些是默认排除。

如何通过在插件代码中使用 Java-Gradle-API 来禁用这些默认排除?

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

我也尝试在从/进入复制规范中设置排除。

弗兰克

我找到了一个解决方案,但我不喜欢它,因为它修改了全局可见的默认值排除:

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());
});
});

最新更新