in buildSrc/src/main/groovy/org/elasticsearch/hadoop/gradle/BuildPlugin.groovy [171:249]
private static void configureConfigurations(Project project) {
// Create a configuration that will hold common test dependencies to be shared with all of a project's test sources, including variants if present
Configuration sharedTestImplementation = project.configurations.create(SHARED_TEST_IMPLEMENTATION_CONFIGURATION_NAME)
project.configurations.getByName(JavaPlugin.TEST_IMPLEMENTATION_CONFIGURATION_NAME).extendsFrom(sharedTestImplementation)
project.getPlugins().withType(SparkVariantPlugin).whenPluginAdded {
SparkVariantPluginExtension sparkVariants = project.getExtensions().getByType(SparkVariantPluginExtension.class)
sparkVariants.featureVariants { SparkVariant variant ->
Configuration variantTestImplementation = project.configurations.getByName(variant.configuration(SourceSet.TEST_SOURCE_SET_NAME, JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME))
variantTestImplementation.extendsFrom(sharedTestImplementation)
}
}
if (project != project.rootProject) {
// Set up avenues for sharing source files between projects in order to create embedded Javadocs
// Import source configuration
Configuration additionalSources = createConfiguration(project, 'additionalSources', false, true, 'java-source', 'sources')
// Export source configuration - different from 'sourcesElements' which contains sourceJars instead of source files
Configuration sourceElements = createConfiguration(project, 'sourceElements', true, false, 'java-source', 'sources')
sourceElements.extendsFrom(additionalSources)
// Import javadoc sources
createConfiguration(project, 'javadocSources', false, true, 'javadoc-source', 'sources')
// Export javadoc source configuration - different from 'javadocElements' which contains javadocJars instead of java source files used to generate javadocs
Configuration javadocSourceElements = createConfiguration(project, 'javadocSourceElements', true, false, 'javadoc-source', 'sources')
javadocSourceElements.extendsFrom(additionalSources)
// Export configuration for archives that should be in the distribution
// TODO: Should we ditch this in favor of just using the built in exporting configurations? all three artifact types have them now
createConfiguration(project, 'distElements', true, false, 'packaging')
// Do the same for any variants if the project has them
project.getPlugins().withType(SparkVariantPlugin).whenPluginAdded {
SparkVariantPluginExtension sparkVariants = project.getExtensions().getByType(SparkVariantPluginExtension.class)
sparkVariants.featureVariants { SparkVariant variant ->
Configuration vAdditionalSources = createConfiguration(project, variant.configuration('additionalSources'), false, true, 'java-source', 'sources')
Configuration vSourceElements = createConfiguration(project, variant.configuration('sourceElements'), true, false, 'java-source', 'sources')
vSourceElements.extendsFrom(vAdditionalSources)
createConfiguration(project, variant.configuration('javadocSources'), false, true, 'javadoc-source', 'sources')
Configuration vJavadocSourceElements = createConfiguration(project, variant.configuration('javadocSourceElements'), true, false, 'javadoc-source', 'sources')
vJavadocSourceElements.extendsFrom(vAdditionalSources)
createConfiguration(project, variant.configuration('distElements'), true, false, 'packaging')
}
sparkVariants.all { SparkVariant variant ->
// Set capabilities on ALL variants if variants are enabled.
// These are required to differentiate the different producing configurations from each other when resolving artifacts for consuming configurations.
String variantCapability = variant.getCapabilityName(project.getVersion())
project.configurations.getByName(variant.configuration('sourceElements')).getOutgoing().capability(variantCapability)
project.configurations.getByName(variant.configuration('javadocSourceElements')).getOutgoing().capability(variantCapability)
project.configurations.getByName(variant.configuration('distElements')).getOutgoing().capability(variantCapability)
}
}
}
if (project.path.startsWith(":qa")) {
return
}
// force all dependencies added directly to compile/testCompile to be non-transitive, except for Elasticsearch projects
disableTransitiveDependencies(project, project.configurations.api)
disableTransitiveDependencies(project, project.configurations.implementation)
disableTransitiveDependencies(project, project.configurations.compileOnly)
disableTransitiveDependencies(project, project.configurations.runtimeOnly)
project.getPlugins().withType(SparkVariantPlugin).whenPluginAdded {
SparkVariantPluginExtension sparkVariants = project.getExtensions().getByType(SparkVariantPluginExtension.class)
sparkVariants.featureVariants { SparkVariant variant ->
disableTransitiveDependencies(project, project.getConfigurations().findByName(variant.configuration("api")))
disableTransitiveDependencies(project, project.getConfigurations().findByName(variant.configuration("implementation")))
disableTransitiveDependencies(project, project.getConfigurations().findByName(variant.configuration("compileOnly")))
disableTransitiveDependencies(project, project.getConfigurations().findByName(variant.configuration("runtimeOnly")))
}
}
}