Browse Source

Extend optional rather than adding it to existing classpath

This allows the attributes configured on compileClasspath and
runtimeClasspath to independently influence the variant selection when
resolving the optional configuration, allowing it to contribute compile
dependencies (JAVA_API) to the former and runtime dependencies
(JAVA_RUNTIME) to the latter.

Fixes gh-27365
pull/27374/head
Andy Wilkinson 4 years ago committed by Brian Clozel
parent
commit
d23afea168
  1. 14
      buildSrc/src/main/java/org/springframework/build/optional/OptionalDependenciesPlugin.java

14
buildSrc/src/main/java/org/springframework/build/optional/OptionalDependenciesPlugin.java

@ -44,18 +44,14 @@ public class OptionalDependenciesPlugin implements Plugin<Project> { @@ -44,18 +44,14 @@ public class OptionalDependenciesPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
Configuration optional = project.getConfigurations().create("optional");
optional.attributes((attributes) -> attributes.attribute(Usage.USAGE_ATTRIBUTE,
project.getObjects().named(Usage.class, Usage.JAVA_API)));
optional.setCanBeConsumed(false);
optional.setCanBeResolved(true);
optional.setCanBeResolved(false);
project.getPlugins().withType(JavaPlugin.class, (javaPlugin) -> {
SourceSetContainer sourceSets = project.getConvention()
.getPlugin(JavaPluginConvention.class).getSourceSets();
SourceSetContainer sourceSets = project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets();
sourceSets.all((sourceSet) -> {
sourceSet.setCompileClasspath(
sourceSet.getCompileClasspath().plus(optional));
sourceSet.setRuntimeClasspath(
sourceSet.getRuntimeClasspath().plus(optional));
project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName()).extendsFrom(optional);
project.getConfigurations().getByName(sourceSet.getRuntimeClasspathConfigurationName()).extendsFrom(optional);
});
});
project.getPlugins().withType(EclipsePlugin.class, (eclipePlugin) -> {

Loading…
Cancel
Save