private static Copy getConjureSources( Project project, org.gradle.api.internal.file.SourceDirectorySetFactory sourceDirectorySetFactory) { // Conjure code source set SourceDirectorySet conjureSourceSet = sourceDirectorySetFactory.create("conjure"); conjureSourceSet.setSrcDirs(Collections.singleton("src/main/conjure")); conjureSourceSet.setIncludes(Collections.singleton("**/*.yml")); // Copy conjure imports into build directory File buildDir = new File(project.getBuildDir(), "conjure"); // Copy conjure sources into build directory Copy copyConjureSourcesTask = project.getTasks().create("copyConjureSourcesIntoBuild", Copy.class); copyConjureSourcesTask.into(project.file(buildDir)).from(conjureSourceSet); copyConjureSourcesTask.doFirst(task -> { GFileUtils.deleteDirectory(buildDir); }); Task cleanTask = project.getTasks().findByName(TASK_CLEAN); cleanTask.dependsOn(project.getTasks().findByName("cleanCopyConjureSourcesIntoBuild")); return copyConjureSourcesTask; }
public static Copy addTaskExpandCompileDependency( Project project, File file, File destinationDir, String taskNamePrefix, RenameDependencyClosure renameDependencyClosure) { String taskName = GradleUtil.getTaskName(taskNamePrefix, file); Copy copy = GradleUtil.addTask(project, taskName, Copy.class); copy.doFirst( new Action<Task>() { @Override public void execute(Task task) { Copy copy = (Copy)task; Project project = copy.getProject(); project.delete(copy.getDestinationDir()); } }); copy.from(project.zipTree(file)); String name = renameDependencyClosure.call(file.getName()); name = name.substring(0, name.length() - 4); destinationDir = new File(destinationDir, name); copy.setDescription( "Expands " + file.getName() + " into " + project.relativePath(destinationDir) + "."); copy.setDestinationDir(destinationDir); return copy; }