private void addRunTask() { JavaExec run = project.getTasks().create(TASK_RUN_NAME, JavaExec.class); run.setDescription("Runs this project as a JVM application"); run.setGroup(APPLICATION_GROUP); JavaPluginConvention javaPluginConvention = project.getConvention().getPlugin(JavaPluginConvention.class); run.setClasspath( javaPluginConvention .getSourceSets() .getByName(SourceSet.MAIN_SOURCE_SET_NAME) .getRuntimeClasspath()); run.getConventionMapping() .map( "main", new Callable<Object>() { @Override public Object call() throws Exception { return pluginConvention.getMainClassName(); } }); run.getConventionMapping() .map( "jvmArgs", new Callable<Object>() { @Override public Object call() throws Exception { return pluginConvention.getApplicationDefaultJvmArgs(); } }); }
private void configureSourceSetDefaults(final JavaPluginConvention pluginConvention) { pluginConvention .getSourceSets() .all( new Action<SourceSet>() { public void execute(final SourceSet sourceSet) { final Project project = pluginConvention.getProject(); ConventionMapping outputConventionMapping = ((IConventionAware) sourceSet.getOutput()).getConventionMapping(); ConfigurationContainer configurations = project.getConfigurations(); Configuration compileConfiguration = configurations.findByName(sourceSet.getCompileConfigurationName()); if (compileConfiguration == null) { compileConfiguration = configurations.add(sourceSet.getCompileConfigurationName()); } compileConfiguration.setVisible(false); compileConfiguration.setDescription( String.format("Classpath for compiling the %s sources.", sourceSet.getName())); Configuration runtimeConfiguration = configurations.findByName(sourceSet.getRuntimeConfigurationName()); if (runtimeConfiguration == null) { runtimeConfiguration = configurations.add(sourceSet.getRuntimeConfigurationName()); } runtimeConfiguration.setVisible(false); runtimeConfiguration.extendsFrom(compileConfiguration); runtimeConfiguration.setDescription( String.format( "Classpath for running the compiled %s classes.", sourceSet.getName())); sourceSet.setCompileClasspath(compileConfiguration); sourceSet.setRuntimeClasspath(sourceSet.getOutput().plus(runtimeConfiguration)); outputConventionMapping.map( "classesDir", new Callable<Object>() { public Object call() throws Exception { String classesDirName = String.format("classes/%s", sourceSet.getName()); return new File(project.getBuildDir(), classesDirName); } }); outputConventionMapping.map( "resourcesDir", new Callable<Object>() { public Object call() throws Exception { String classesDirName = String.format("resources/%s", sourceSet.getName()); return new File(project.getBuildDir(), classesDirName); } }); sourceSet.getJava().srcDir(String.format("src/%s/java", sourceSet.getName())); sourceSet .getResources() .srcDir(String.format("src/%s/resources", sourceSet.getName())); Copy processResources = project .getTasks() .add(sourceSet.getProcessResourcesTaskName(), ProcessResources.class); processResources.setDescription( String.format("Processes the %s.", sourceSet.getResources())); ConventionMapping conventionMapping = processResources.getConventionMapping(); processResources.from(sourceSet.getResources()); conventionMapping.map( "destinationDir", new Callable<Object>() { public Object call() throws Exception { return sourceSet.getOutput().getResourcesDir(); } }); String compileTaskName = sourceSet.getCompileJavaTaskName(); JavaCompile compileJava = project.getTasks().add(compileTaskName, JavaCompile.class); configureForSourceSet(sourceSet, compileJava); Task classes = project.getTasks().add(sourceSet.getClassesTaskName()); classes.dependsOn(sourceSet.getProcessResourcesTaskName(), compileTaskName); classes.setDescription( String.format("Assembles the %s classes.", sourceSet.getName())); classes.setGroup(BasePlugin.BUILD_GROUP); classes.dependsOn(sourceSet.getOutput().getDirs()); sourceSet.compiledBy(sourceSet.getClassesTaskName()); } }); }
private void configureSourceSetDefaults(final JavaPluginConvention pluginConvention) { final Project project = pluginConvention.getProject(); final ProjectSourceSet projectSourceSet = project.getExtensions().getByType(ProjectSourceSet.class); pluginConvention .getSourceSets() .all( new Action<SourceSet>() { public void execute(final SourceSet sourceSet) { ConventionMapping outputConventionMapping = ((IConventionAware) sourceSet.getOutput()).getConventionMapping(); ConfigurationContainer configurations = project.getConfigurations(); defineConfigurationsForSourceSet(sourceSet, configurations); definePathsForSourceSet(sourceSet, outputConventionMapping, project); sourceSet.compiledBy(sourceSet.getClassesTaskName()); Classpath compileClasspath = new SourceSetCompileClasspath(sourceSet); DefaultJavaSourceSet javaSourceSet = instantiator.newInstance( DefaultJavaSourceSet.class, "java", sourceSet.getName(), sourceSet.getJava(), compileClasspath); projectSourceSet.add(javaSourceSet); JvmResourceSet resourceSet = instantiator.newInstance( DefaultJvmResourceSet.class, "resources", sourceSet.getName(), sourceSet.getResources()); projectSourceSet.add(resourceSet); createProcessResourcesTaskForBinary(sourceSet, resourceSet, project); createCompileJavaTaskForBinary(sourceSet, javaSourceSet, project); createBinaryLifecycleTask(sourceSet, project); ClassDirectoryBinarySpecInternal binary = instantiator.newInstance( DefaultClassDirectoryBinarySpec.class, String.format("%sClasses", sourceSet.getName()), sourceSet, javaToolChain, DefaultJavaPlatform.current(), instantiator, taskFactory); binary.addSourceSet(javaSourceSet); binary.addSourceSet(resourceSet); BinaryContainer binaryContainer = project.getExtensions().getByType(BinaryContainer.class); binaryContainer.add(binary); attachTasksToBinary(binary, sourceSet, project); } }); }
private void configureSourceSetDefaults(final JavaPluginConvention pluginConvention) { final Project project = pluginConvention.getProject(); final ProjectSourceSet projectSourceSet = project.getExtensions().getByType(ProjectSourceSet.class); pluginConvention .getSourceSets() .all( new Action<SourceSet>() { public void execute(final SourceSet sourceSet) { ConventionMapping outputConventionMapping = ((IConventionAware) sourceSet.getOutput()).getConventionMapping(); ConfigurationContainer configurations = project.getConfigurations(); Configuration compileConfiguration = configurations.findByName(sourceSet.getCompileConfigurationName()); if (compileConfiguration == null) { compileConfiguration = configurations.add(sourceSet.getCompileConfigurationName()); } compileConfiguration.setVisible(false); compileConfiguration.setDescription( String.format("Classpath for compiling the %s sources.", sourceSet.getName())); Configuration runtimeConfiguration = configurations.findByName(sourceSet.getRuntimeConfigurationName()); if (runtimeConfiguration == null) { runtimeConfiguration = configurations.add(sourceSet.getRuntimeConfigurationName()); } runtimeConfiguration.setVisible(false); runtimeConfiguration.extendsFrom(compileConfiguration); runtimeConfiguration.setDescription( String.format( "Classpath for running the compiled %s classes.", sourceSet.getName())); sourceSet.setCompileClasspath(compileConfiguration); sourceSet.setRuntimeClasspath(sourceSet.getOutput().plus(runtimeConfiguration)); outputConventionMapping.map( "classesDir", new Callable<Object>() { public Object call() throws Exception { String classesDirName = String.format("classes/%s", sourceSet.getName()); return new File(project.getBuildDir(), classesDirName); } }); outputConventionMapping.map( "resourcesDir", new Callable<Object>() { public Object call() throws Exception { String classesDirName = String.format("resources/%s", sourceSet.getName()); return new File(project.getBuildDir(), classesDirName); } }); sourceSet.getJava().srcDir(String.format("src/%s/java", sourceSet.getName())); sourceSet .getResources() .srcDir(String.format("src/%s/resources", sourceSet.getName())); sourceSet.compiledBy(sourceSet.getClassesTaskName()); FunctionalSourceSet functionalSourceSet = projectSourceSet.create(sourceSet.getName()); Classpath compileClasspath = new SourceSetCompileClasspath(sourceSet); DefaultJavaSourceSet javaSourceSet = instantiator.newInstance( DefaultJavaSourceSet.class, "java", sourceSet.getJava(), compileClasspath, functionalSourceSet); functionalSourceSet.add(javaSourceSet); ResourceSet resourceSet = instantiator.newInstance( DefaultResourceSet.class, "resources", sourceSet.getResources(), functionalSourceSet); functionalSourceSet.add(resourceSet); JvmBinaryContainer jvmBinaryContainer = project.getPlugins().getPlugin(JvmLanguagePlugin.class).getJvmBinaryContainer(); ClassDirectoryBinary binary = jvmBinaryContainer.create(sourceSet.getName(), ClassDirectoryBinary.class); ConventionMapping conventionMapping = new DslObject(binary).getConventionMapping(); conventionMapping.map( "classesDir", new Callable<File>() { public File call() throws Exception { return sourceSet.getOutput().getClassesDir(); } }); conventionMapping.map( "resourcesDir", new Callable<File>() { public File call() throws Exception { return sourceSet.getOutput().getResourcesDir(); } }); binary.getSource().add(javaSourceSet); binary.getSource().add(resourceSet); binary.getClassesTask().dependsOn(sourceSet.getOutput().getDirs()); } }); }