From 53ac2519f2706f9ed2a4257fd5a02e110931930f Mon Sep 17 00:00:00 2001 From: Dan Lew Date: Tue, 15 Mar 2016 14:34:31 -0700 Subject: [PATCH] Added workaround for v2.12 DefaultSourceDirectorySet --- .../com/trello/victor/VictorPlugin.groovy | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/victor/src/main/groovy/com/trello/victor/VictorPlugin.groovy b/victor/src/main/groovy/com/trello/victor/VictorPlugin.groovy index 696ad40..349f745 100644 --- a/victor/src/main/groovy/com/trello/victor/VictorPlugin.groovy +++ b/victor/src/main/groovy/com/trello/victor/VictorPlugin.groovy @@ -20,15 +20,32 @@ import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.file.FileCollection import org.gradle.api.internal.file.DefaultSourceDirectorySet +import org.gradle.util.GradleVersion class VictorPlugin implements Plugin { void apply(Project project) { project.extensions.create('victor', VictorPluginExtension) + // We can either implement our own SourceDirectorySet (which is a PITA) + // or we can suffer the lesser pains of accessing internal APIs + final boolean useNewSourceDirectorySet = + GradleVersion.current().compareTo(GradleVersion.version("2.12")) >= 0 + // Add 'svg' as a source set extension project.android.sourceSets.all { sourceSet -> - sourceSet.extensions.create('svg', DefaultSourceDirectorySet, 'svg', project.fileResolver) + if (useNewSourceDirectorySet) { + Class defaultFileTreeFactoryClass = + Class.forName("org.gradle.api.internal.file.collections.DefaultDirectoryFileTreeFactory") + + sourceSet.extensions.create('svg', DefaultSourceDirectorySet, 'svg', + project.fileResolver, + defaultFileTreeFactoryClass.getConstructor().newInstance()) + } + else { + sourceSet.extensions.create('svg', DefaultSourceDirectorySet, 'svg', + project.fileResolver) + } } project.afterEvaluate {