1919
2020package org.elasticsearch.hadoop.gradle
2121
22+ import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask
2223import org.elasticsearch.hadoop.gradle.buildtools.DependenciesInfoPlugin
2324import org.elasticsearch.hadoop.gradle.buildtools.DependencyLicensesTask
2425import org.elasticsearch.hadoop.gradle.buildtools.LicenseHeadersTask
25- import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask
2626import org.elasticsearch.hadoop.gradle.buildtools.UpdateShasTask
2727import org.elasticsearch.hadoop.gradle.buildtools.info.BuildParams
2828import org.elasticsearch.hadoop.gradle.scala.SparkVariantPlugin
2929import org.gradle.api.Plugin
3030import org.gradle.api.Project
3131import org.gradle.api.Task
3232import org.gradle.api.XmlProvider
33- import org.gradle.api.artifacts.Configuration
34- import org.gradle.api.artifacts.Dependency
35- import org.gradle.api.artifacts.DependencyResolveDetails
36- import org.gradle.api.artifacts.ModuleDependency
37- import org.gradle.api.artifacts.ProjectDependency
38- import org.gradle.api.artifacts.ResolutionStrategy
33+ import org.gradle.api.artifacts.*
34+
3935import org.gradle.api.attributes.LibraryElements
4036import org.gradle.api.attributes.Usage
4137import org.gradle.api.component.SoftwareComponentFactory
4238import org.gradle.api.file.CopySpec
4339import org.gradle.api.file.FileCollection
4440import org.gradle.api.java.archives.Manifest
41+ import org.gradle.api.plugins.BasePluginExtension
4542import org.gradle.api.plugins.JavaLibraryPlugin
4643import org.gradle.api.plugins.JavaPlugin
4744import org.gradle.api.plugins.scala.ScalaPlugin
4845import org.gradle.api.provider.Provider
4946import org.gradle.api.publish.maven.MavenPom
5047import org.gradle.api.publish.maven.MavenPublication
5148import org.gradle.api.publish.maven.tasks.GenerateMavenPom
52- import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
5349import org.gradle.api.tasks.Copy
5450import org.gradle.api.tasks.SourceSet
5551import org.gradle.api.tasks.SourceSetContainer
@@ -62,25 +58,14 @@ import org.gradle.external.javadoc.JavadocOutputLevel
6258import org.gradle.external.javadoc.MinimalJavadocOptions
6359import org.gradle.plugins.ide.eclipse.EclipsePlugin
6460import org.gradle.plugins.ide.idea.IdeaPlugin
65- import org.gradle.api.plugins.BasePluginExtension
66-
6761import org.w3c.dom.NodeList
68-
62+ import org.gradle.api.component.ConfigurationVariantDetails
6963import javax.inject.Inject
7064
71- import static org.elasticsearch.hadoop.gradle.scala.SparkVariantPlugin.SparkVariantPluginExtension
7265import static org.elasticsearch.hadoop.gradle.scala.SparkVariantPlugin.SparkVariant
73- import org.gradle.api.artifacts.ResolvableDependencies ;
74- import org.gradle.api.artifacts.component.ComponentIdentifier ;
75- import org.gradle.api.artifacts.result.ResolvedComponentResult ;
76- import org.gradle.api.artifacts.result.ResolvedDependencyResult ;
77- import org.gradle.api.file.FileCollection ;
78- import org.gradle.api.specs.AndSpec ;
79- import org.gradle.api.specs.Spec ;
80- import org.gradle.api.artifacts.component.ModuleComponentIdentifier ;
81- import java.util.stream.Collectors ;
82-
83- class BuildPlugin implements Plugin<Project > {
66+ import static org.elasticsearch.hadoop.gradle.scala.SparkVariantPlugin.SparkVariantPluginExtension
67+
68+ class BuildPlugin implements Plugin<Project > {
8469
8570 public static final String SHARED_TEST_IMPLEMENTATION_CONFIGURATION_NAME = " sharedTestImplementation"
8671 public static final String SHARED_ITEST_IMPLEMENTATION_CONFIGURATION_NAME = " sharedItestImplementation"
@@ -568,6 +553,7 @@ class BuildPlugin implements Plugin<Project> {
568553 private void configureMaven (Project project ) {
569554 project. getPluginManager(). apply(" maven-publish" )
570555 project. getPluginManager(). apply(" com.gradleup.nmcp" )
556+ project. getPluginManager(). apply(" signing" )
571557
572558 // Configure Maven publication
573559 project. publishing {
@@ -585,6 +571,12 @@ class BuildPlugin implements Plugin<Project> {
585571 }
586572 }
587573
574+ Provider<String > signingKey = project. getProviders(). gradleProperty(" signingKey" );
575+ if (signingKey. isPresent()) {
576+ project. signing. useInMemoryPgpKeys(signingKey. get(), project. getProviders(). gradleProperty(" signingPassword" ). get());
577+ project. signing. sign(project. publishing. publications. main);
578+ }
579+
588580 // Configure Maven Pom
589581 configurePom(project, project. publishing. publications. main)
590582
@@ -633,16 +625,20 @@ class BuildPlugin implements Plugin<Project> {
633625 project. components. add(variantComponent)
634626 // Register the variant's outgoing configurations for publication
635627 variantComponent. addVariantsFromConfiguration(project. configurations. getByName(variant. configuration(" apiElements" ))) {
628+ filterNonJarArtifacts(it)
636629 it. mapToMavenScope(" compile" )
637630 }
638631 variantComponent. addVariantsFromConfiguration(project. configurations. getByName(variant. configuration(" runtimeElements" ))) {
632+ filterNonJarArtifacts(it)
639633 it. mapToMavenScope(" runtime" )
640634 }
641635 variantComponent. addVariantsFromConfiguration(project. configurations. getByName(variant. configuration(" javadocElements" ))) {
636+ filterNonJarArtifacts(it)
642637 it. mapToMavenScope(" runtime" )
643638 }
644639 variantComponent. addVariantsFromConfiguration(project. configurations. getByName(variant. configuration(" sourcesElements" ))) {
645640 it. mapToMavenScope(" runtime" )
641+ filterNonJarArtifacts(it)
646642 }
647643
648644 // Create a publication for this adhoc component to create pom generation and publishing tasks
@@ -657,6 +653,11 @@ class BuildPlugin implements Plugin<Project> {
657653 updateVariantArtifactId(project, variantPublication, variant)
658654 }
659655 }
656+ if (signingKey. isPresent()) {
657+ project. signing {
658+ sign(project. publishing. publications. getByName(variant. getName()));
659+ }
660+ }
660661 }
661662 }
662663
@@ -666,6 +667,13 @@ class BuildPlugin implements Plugin<Project> {
666667 }
667668 }
668669
670+ private void filterNonJarArtifacts (ConfigurationVariantDetails details ) {
671+ def attribute = details. getConfigurationVariant(). getAttributes(). getAttribute(LibraryElements . LIBRARY_ELEMENTS_ATTRIBUTE )
672+ if (attribute != null && attribute. name != LibraryElements . JAR ) {
673+ details. skip()
674+ }
675+ }
676+
669677 private static void configurePom (Project project , MavenPublication publication ) {
670678 // add all items necessary for publication
671679 Provider<String > descriptionProvider = project. provider({ project. getDescription() })
@@ -830,7 +838,7 @@ class BuildPlugin implements Plugin<Project> {
830838 precommitTasks. add(licenseHeaders)
831839
832840 if (! project. path. startsWith(" :qa" )) {
833- TaskProvider<DependencyLicensesTask > dependencyLicenses = project. tasks. register(' dependencyLicenses' , DependencyLicensesTask . class) {
841+ TaskProvider<DependencyLicensesTask > dependencyLicenses = project. tasks. register(' dependencyLicenses' , DependencyLicensesTask . class) {
834842 dependencies = project. configurations. runtimeClasspath
835843 mapping from : / hadoop-.*/ , to : ' hadoop'
836844 mapping from : / hive-.*/ , to : ' hive'
0 commit comments