use of org.gradle.api.Task in project gradle by gradle.
the class DefaultJvmLanguageGeneratedSourceDirectoryBuilder method build.
void build() {
if (taskBuilder == null) {
throw new IllegalStateException("You must specify how sources will be compiled either by calling compiledWithJava or compiledBy");
}
if (mapping == null) {
throw new IllegalStateException("You must specify the mapping function from your source generating task to a directory property");
}
if (sourceTaskProvider == null) {
throw new IllegalStateException("You must specify the source generation task");
}
Provider<Directory> sourceDirectory = sourceTaskProvider.flatMap(task -> mapping.apply(Cast.uncheckedCast(task)));
DefaultCompileTaskDetails details = createTaskDetails(project.getObjects().directoryProperty().convention(sourceDirectory));
DefaultSourceSetOutput sourceSetOutput = Cast.cast(DefaultSourceSetOutput.class, sourceSet.getOutput());
sourceSetOutput.addClassesDir(details.compileTask.flatMap(task -> details.compileMapping.apply(Cast.uncheckedCast(task))));
sourceSetOutput.registerClassesContributor(details.compileTask);
sourceSetOutput.getGeneratedSourcesDirs().from(sourceDirectory);
project.getTasks().matching(DefaultJvmLanguageGeneratedSourceDirectoryBuilder::isClassesTask).configureEach(classes -> classes.dependsOn(details.compileTask));
if (includeInAllJava) {
sourceSet.getAllJava().srcDir(sourceDirectory);
}
sourceSet.getAllSource().srcDir(sourceDirectory);
}
use of org.gradle.api.Task in project gradle by gradle.
the class JvmPluginsHelper method configureDocumentationVariantWithArtifact.
public static void configureDocumentationVariantWithArtifact(String variantName, @Nullable String featureName, String docsType, List<Capability> capabilities, String jarTaskName, Object artifactSource, @Nullable AdhocComponentWithVariants component, ConfigurationContainer configurations, TaskContainer tasks, ObjectFactory objectFactory, FileResolver fileResolver) {
Configuration variant = maybeCreateInvisibleConfig(configurations, variantName, docsType + " elements for " + (featureName == null ? "main" : featureName) + ".", true);
AttributeContainer attributes = variant.getAttributes();
attributes.attribute(Usage.USAGE_ATTRIBUTE, objectFactory.named(Usage.class, Usage.JAVA_RUNTIME));
attributes.attribute(Category.CATEGORY_ATTRIBUTE, objectFactory.named(Category.class, Category.DOCUMENTATION));
attributes.attribute(Bundling.BUNDLING_ATTRIBUTE, objectFactory.named(Bundling.class, Bundling.EXTERNAL));
attributes.attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objectFactory.named(DocsType.class, docsType));
capabilities.forEach(variant.getOutgoing()::capability);
if (!tasks.getNames().contains(jarTaskName)) {
TaskProvider<Jar> jarTask = tasks.register(jarTaskName, Jar.class, jar -> {
jar.setDescription("Assembles a jar archive containing the " + (featureName == null ? "main " + docsType + "." : (docsType + " of the '" + featureName + "' feature.")));
jar.setGroup(BasePlugin.BUILD_GROUP);
jar.from(artifactSource);
jar.getArchiveClassifier().set(camelToKebabCase(featureName == null ? docsType : (featureName + "-" + docsType)));
});
if (tasks.getNames().contains(LifecycleBasePlugin.ASSEMBLE_TASK_NAME)) {
tasks.named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).configure(task -> task.dependsOn(jarTask));
}
}
TaskProvider<Task> jar = tasks.named(jarTaskName);
variant.getOutgoing().artifact(new LazyPublishArtifact(jar, fileResolver));
if (component != null) {
component.addVariantsFromConfiguration(variant, new JavaConfigurationVariantMapping("runtime", true));
}
}
use of org.gradle.api.Task in project gradle by gradle.
the class DefaultJvmLanguageSourceDirectoryBuilder method build.
void build() {
if (taskBuilder == null) {
throw new IllegalStateException("You must specify the task which will contribute classes from this source directory");
}
SourceDirectorySet langSrcDir = project.getObjects().sourceDirectorySet(name, description == null ? "Sources for " + name : description);
langSrcDir.srcDir("src/" + sourceSet.getName() + "/" + name);
DefaultCompileTaskDetails details = createTaskDetails(langSrcDir);
JvmPluginsHelper.configureOutputDirectoryForSourceSet(sourceSet, langSrcDir, project, details.task, details.task.map(task -> {
if (task instanceof HasCompileOptions) {
return ((HasCompileOptions) task).getOptions();
}
throw new UnsupportedOperationException("Unsupported compile task " + task.getClass().getName());
}), Cast.uncheckedCast(details.mapping));
if (includeInAllJava) {
sourceSet.getAllJava().source(langSrcDir);
}
sourceSet.getAllSource().source(langSrcDir);
project.getTasks().named(JavaPlugin.CLASSES_TASK_NAME).configure(classes -> classes.dependsOn(details.task));
}
use of org.gradle.api.Task in project gradle by gradle.
the class DefaultJvmVariantBuilder method configureDocumentationVariantWithArtifact.
public void configureDocumentationVariantWithArtifact(String variantName, @Nullable String name, @Nullable String displayName, String docsType, String jarTaskName, Object artifactSource, @Nullable AdhocComponentWithVariants component) {
Configuration variant = configurations.maybeCreate(variantName);
variant.setVisible(false);
variant.setDescription(docsType + " elements for " + (displayName == null ? "main" : displayName) + ".");
variant.setCanBeResolved(false);
variant.setCanBeConsumed(true);
jvmPluginServices.configureAttributes(variant, attributes -> attributes.documentation(docsType).runtimeUsage().withExternalDependencies());
capabilities.forEach(variant.getOutgoing()::capability);
if (!tasks.getNames().contains(jarTaskName)) {
TaskProvider<Jar> jarTask = tasks.register(jarTaskName, Jar.class, jar -> {
jar.setDescription("Assembles a jar archive containing the " + (displayName == null ? "main " + docsType + "." : (docsType + " of the '" + displayName + "'.")));
jar.setGroup(BasePlugin.BUILD_GROUP);
jar.from(artifactSource);
jar.getArchiveClassifier().set(TextUtil.camelToKebabCase(name == null ? docsType : (name + "-" + docsType)));
});
if (tasks.getNames().contains(LifecycleBasePlugin.ASSEMBLE_TASK_NAME)) {
tasks.named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).configure(task -> task.dependsOn(jarTask));
}
}
TaskProvider<Task> jar = tasks.named(jarTaskName);
variant.getOutgoing().artifact(new LazyPublishArtifact(jar, project.getFileResolver()));
if (published && component != null) {
component.addVariantsFromConfiguration(variant, new JavaConfigurationVariantMapping("runtime", true));
}
}
use of org.gradle.api.Task in project gradle by gradle.
the class EclipseClasspath method resolveDependencies.
/**
* Calculates, resolves and returns dependency entries of this classpath.
*/
public List<ClasspathEntry> resolveDependencies() {
ProjectInternal projectInternal = (ProjectInternal) this.project;
IdeArtifactRegistry ideArtifactRegistry = projectInternal.getServices().get(IdeArtifactRegistry.class);
boolean inferModulePath = false;
Task javaCompileTask = project.getTasks().findByName(JavaPlugin.COMPILE_JAVA_TASK_NAME);
if (javaCompileTask instanceof JavaCompile) {
JavaCompile javaCompile = (JavaCompile) javaCompileTask;
inferModulePath = javaCompile.getModularity().getInferModulePath().get();
if (inferModulePath) {
List<File> sourceRoots = CompilationSourceDirs.inferSourceRoots((FileTreeInternal) javaCompile.getSource());
inferModulePath = JavaModuleDetector.isModuleSource(true, sourceRoots);
}
}
ClasspathFactory classpathFactory = new ClasspathFactory(this, ideArtifactRegistry, new DefaultGradleApiSourcesResolver(projectInternal.newDetachedResolver()), inferModulePath);
return classpathFactory.createEntries();
}
Aggregations