@InputFiles public FileCollection getSourceDirs() { if (sourceDirectories != null) { return sourceDirectories.getSourceDirectories(); } else { return project.files(); } }
@Override public void execute(Task task) { List<String> args = new ArrayList<>(); args.add("--module-path"); args.add(compileTestJava.getClasspath().getAsPath()); args.add("--add-modules"); args.add("junit"); args.add("--add-reads"); args.add(module.geName() + "=junit"); args.add("--patch-module"); args.add(module.geName() + "=" + test.getJava().getSourceDirectories().getAsPath()); compileTestJava.getOptions().setCompilerArgs(args); compileTestJava.setClasspath(project.files()); } });
private static String getDefaultSourcepath(Project project, ScalaCompile scalaCompile) { // The source sets are configured in the JavaPlugin and ScalaPlugin and they use the JavaPluginConvention to store the source sets. SourceSetContainer sourceSets = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets(); StringJoiner sourcepathJoiner = new StringJoiner(File.pathSeparator); for (SourceSet set : sourceSets) { if (set.getCompileTaskName("scala").equals(scalaCompile.getName())) { Convention scalaConvention = (Convention) InvokerHelper.getProperty(set, "convention"); ScalaSourceSet scalaSourceSet = scalaConvention.findPlugin(ScalaSourceSet.class); scalaSourceSet.getAllScala().getSourceDirectories().getFiles().forEach(file -> sourcepathJoiner.add(file.getAbsolutePath())); } } LOGGER.debug("Hydra sourcepath: {}.", sourcepathJoiner); return sourcepathJoiner.toString(); }
Provider<FileCollection> getSourceRoots() { return getSourceSet().map(sourceSet -> { ClojureSourceSet clojure = (ClojureSourceSet) new DslObject(sourceSet).getConvention().getPlugins().get("clojure"); return clojure.getClojure().getSourceDirectories(); }); }
Provider<FileCollection> getSourceRoots() { return getSourceSet().map(sourceSet -> { ClojureSourceSet clojure = (ClojureSourceSet) new DslObject(sourceSet).getConvention().getPlugins().get("clojure"); return clojure.getClojure().getSourceDirectories(); }); }
Provider<FileCollection> getSourceRoots() { return getSourceSet().map(sourceSet -> { ClojureScriptSourceSet clojure = (ClojureScriptSourceSet) new DslObject(sourceSet).getConvention().getPlugins().get("clojurescript"); return clojure.getClojureScript().getSourceDirectories(); }); }
Provider<FileCollection> getSourceRoots() { return getSourceSet().map(sourceSet -> { ClojureScriptSourceSet clojure = (ClojureScriptSourceSet) new DslObject(sourceSet).getConvention().getPlugins().get("clojurescript"); return clojure.getClojureScript().getSourceDirectories(); }); }
.getSourceDirectories() .getFiles() .stream()
/** * Prints build files, sources, and resources associated with a project. * * @param project the project */ private static void printProjectFiles(Project project) { JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class); SourceSet mainSourceSet = javaConvention.getSourceSets().findByName(SourceSet.MAIN_SOURCE_SET_NAME); if (mainSourceSet == null) { return; } // Print build config, settings, etc. printGradleFiles(project); // Print sources + resources mainSourceSet .getAllSource() .getSourceDirectories() .forEach( sourceDirectory -> { if (sourceDirectory.exists()) { System.out.println(sourceDirectory); } }); }
private void configureDev(Project project, JavaPluginConvention javaConvention) { SourceSet main = javaConvention.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); SourceSet test = javaConvention.getSourceSets().getByName(SourceSet.TEST_SOURCE_SET_NAME); SourceSet dev = javaConvention.getSourceSets().create(DEV_SOURCE_SET_NAME); dev.setCompileClasspath(project.files(test.getOutput(), main.getOutput(), project.getConfigurations().getByName(dev.getCompileClasspathConfigurationName()))); dev.setRuntimeClasspath(project.files(dev.getAllSource().getSourceDirectories(), test.getAllSource().getSourceDirectories(), main.getAllSource().getSourceDirectories(), project.getConfigurations().getByName(dev.getRuntimeClasspathConfigurationName()))); Stream.<Function<SourceSet, String>>of(SourceSet::getCompileConfigurationName, SourceSet::getImplementationConfigurationName, SourceSet::getRuntimeConfigurationName, SourceSet::getRuntimeOnlyConfigurationName).forEach(getter -> { Configuration devConf = project.getConfigurations().getByName(getter.apply(dev)); Configuration testConf = project.getConfigurations().getByName(getter.apply(test)); devConf.extendsFrom(testConf); }); project.getTasks().create("clojureRepl", ClojureNRepl.class, task -> { task.setGroup("run"); task.setDescription("Starts an nREPL server."); task.setClasspath(dev.getRuntimeClasspath()); }); } }
public void configureCompileTestJava(Project project, String moduleName) { JavaCompile compileTestJava = (JavaCompile) project.getTasks().findByName(JavaPlugin.COMPILE_TEST_JAVA_TASK_NAME); JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class); compileTestJava.getExtensions().create("moduleOptions", ModuleOptions.class, project); SourceSet testSourceSet = javaConvention.getSourceSets().getByName(SourceSet.TEST_SOURCE_SET_NAME); compileTestJava.doFirst(task -> { var args = new ArrayList<>(compileTestJava.getOptions().getCompilerArgs()); args.addAll(List.of( "--module-path", compileTestJava.getClasspath().getAsPath(), "--patch-module", moduleName + "=" + testSourceSet.getJava().getSourceDirectories().getAsPath() )); TestEngine.select(project).ifPresent(testEngine -> { args.addAll(List.of( "--add-modules", testEngine.moduleName, "--add-reads", moduleName + "=" + testEngine.moduleName)); }); ModuleOptions moduleOptions = compileTestJava.getExtensions().getByType(ModuleOptions.class); if(!moduleOptions.getAddModules().isEmpty()) { String addModules = String.join(",", moduleOptions.getAddModules()); args.add("--add-modules"); args.add(addModules); } ModuleInfoTestHelper.mutateArgs(project, moduleName, args::add); compileTestJava.getOptions().setCompilerArgs(args); compileTestJava.setClasspath(project.files()); }); }
project.getConfigurations().getByName(dev.getCompileClasspathConfigurationName()))); dev.setRuntimeClasspath(project.files( dev.getAllSource().getSourceDirectories(), nonClojureOutput.apply(dev), nonClojureOutput.apply(test),
project.getConfigurations().getByName(dev.getCompileClasspathConfigurationName()))); dev.setRuntimeClasspath(project.files( dev.getAllSource().getSourceDirectories(), nonClojureOutput.apply(dev), nonClojureOutput.apply(test),
private void configureCompileTestJavaTask(final JavaCompile compileTestJava, final String moduleName) { setModuleNamesInputProperty(compileTestJava, moduleName); compileTestJava.doFirst(task -> { final Project project = compileTestJava.getProject(); final List<String> args = compileTestJava.getOptions().getCompilerArgs(); addModulePathArgument(args, compileTestJava.getClasspath()); project.getTasks().withType(Test.class).forEach(test -> KnownTestFrameworkModuleInfo.from(test).configureCompileTestJavaTask(args, moduleName)); addPatchModuleArgument(args, moduleName, getSourceSets(project).getByName(TEST_SOURCE_SET_NAME).getJava().getSourceDirectories()); compileTestJava.setClasspath(project.files()); }); }
private void configureSourceSetDefaults(Project project, ClojureExtension extension) { project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all(sourceSet -> { ClojureSourceSet clojureSourceSet = new DefaultClojureSourceSet("clojure", sourceDirectorySetFactory); new DslObject(sourceSet).getConvention().getPlugins().put("clojure", clojureSourceSet); clojureSourceSet.getClojure().srcDir(String.format("src/%s/clojure", sourceSet.getName())); // in case the clojure source overlaps with the resources source sourceSet.getResources().getFilter().exclude(element -> clojureSourceSet.getClojure().contains(element.getFile())); sourceSet.getAllSource().source(clojureSourceSet.getClojure()); ClojureBuild build = extension.getBuilds().create(sourceSet.getName()); build.getSourceSet().set(sourceSet); ((DefaultSourceSetOutput) sourceSet.getOutput()).addClassesDir(() -> build.getOutputDir().get().getAsFile()); project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(build.getTaskName("compile")); project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(build.getTaskName("check")); sourceSet.getOutput().dir(project.provider(() -> { if (build.isCompilerConfigured()) { return clojureSourceSet.getClojure().getSourceDirectories(); } else { return build.getOutputDir(); } })); }); }
private void configureSourceSetDefaults(Project project, ClojureScriptExtension extension) { project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all((SourceSet sourceSet) -> { ClojureScriptSourceSet clojurescriptSourceSet = new DefaultClojureScriptSourceSet("clojurescript", sourceDirectorySetFactory); new DslObject(sourceSet).getConvention().getPlugins().put("clojurescript", clojurescriptSourceSet); clojurescriptSourceSet.getClojureScript().srcDir(String.format("src/%s/clojurescript", sourceSet.getName())); // in case the clojure source overlaps with the resources source sourceSet.getResources().getFilter().exclude(element -> clojurescriptSourceSet.getClojureScript().contains(element.getFile())); sourceSet.getAllSource().source(clojurescriptSourceSet.getClojureScript()); ClojureScriptBuild build = extension.getBuilds().create(sourceSet.getName()); build.getSourceSet().set(sourceSet); sourceSet.getOutput().dir(build.getOutputDir()); project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(build.getTaskName("compile")); sourceSet.getOutput().dir(project.provider(() -> { if (build.isCompilerConfigured()) { return clojurescriptSourceSet.getClojureScript().getSourceDirectories(); } else { return build.getOutputDir(); } })); }); }
private void configureSourceSetDefaults(Project project, ClojureScriptExtension extension) { project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all((SourceSet sourceSet) -> { ClojureScriptSourceSet clojurescriptSourceSet = new DefaultClojureScriptSourceSet("clojurescript", objects); new DslObject(sourceSet).getConvention().getPlugins().put("clojurescript", clojurescriptSourceSet); clojurescriptSourceSet.getClojureScript().srcDir(String.format("src/%s/clojurescript", sourceSet.getName())); // in case the clojure source overlaps with the resources source sourceSet.getResources().getFilter().exclude(element -> clojurescriptSourceSet.getClojureScript().contains(element.getFile())); sourceSet.getAllSource().source(clojurescriptSourceSet.getClojureScript()); ClojureScriptBuild build = extension.getBuilds().create(sourceSet.getName()); build.getSourceSet().set(sourceSet); sourceSet.getOutput().dir(build.getOutputDir()); project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(build.getTaskName("compile")); sourceSet.getOutput().dir(project.provider(() -> { if (build.isCompilerConfigured()) { return build.getOutputDir(); } else { return clojurescriptSourceSet.getClojureScript().getSourceDirectories(); } })); }); }
private void configureSourceSetDefaults(Project project, ClojureExtension extension) { project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all(sourceSet -> { ClojureSourceSet clojureSourceSet = new DefaultClojureSourceSet("clojure", objects); new DslObject(sourceSet).getConvention().getPlugins().put("clojure", clojureSourceSet); clojureSourceSet.getClojure().srcDir(String.format("src/%s/clojure", sourceSet.getName())); // in case the clojure source overlaps with the resources source sourceSet.getResources().getFilter().exclude(element -> clojureSourceSet.getClojure().contains(element.getFile())); sourceSet.getAllSource().source(clojureSourceSet.getClojure()); ClojureBuild build = extension.getBuilds().create(sourceSet.getName()); build.getSourceSet().set(sourceSet); ((DefaultSourceSetOutput) sourceSet.getOutput()).addClassesDir(() -> build.getOutputDir().get().getAsFile()); project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(build.getTaskName("compile")); project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(build.getTaskName("check")); sourceSet.getOutput().dir(project.provider(() -> { if (build.isCompilerConfigured()) { return build.getOutputDir(); } else { return clojureSourceSet.getClojure().getSourceDirectories(); } })); }); }
delombok.getEncoding().set(compileTaskProvider.get().getOptions().getEncoding()); delombok.getClasspath().from(sourceSet.getCompileClasspath()); delombok.getInput().from(sourceSet.getAllJava().getSourceDirectories()); }); });