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 {