diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index fb7318f815b16..7c09e81643efc 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -28,14 +28,8 @@ import org.elasticsearch.gradle.testclusters.ElasticsearchCluster import org.elasticsearch.gradle.testclusters.TestClustersPlugin import org.elasticsearch.gradle.testclusters.TestDistribution import org.elasticsearch.gradle.util.GradleUtils -import org.gradle.api.Action -import org.gradle.api.GradleException -import org.gradle.api.InvalidUserDataException import org.gradle.api.JavaVersion -import org.gradle.api.NamedDomainObjectContainer -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.Task +import org.gradle.api.* import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.ModuleDependency @@ -47,8 +41,10 @@ import org.gradle.api.artifacts.repositories.IvyPatternRepositoryLayout import org.gradle.api.artifacts.repositories.MavenArtifactRepository import org.gradle.api.credentials.HttpHeaderCredentials import org.gradle.api.execution.TaskActionListener +import org.gradle.api.file.CopySpec import org.gradle.api.plugins.ExtraPropertiesExtension import org.gradle.api.plugins.JavaPlugin +import org.gradle.api.tasks.bundling.Jar import org.gradle.api.tasks.testing.Test import org.gradle.util.GradleVersion @@ -83,6 +79,7 @@ class BuildPlugin implements Plugin { ) } project.pluginManager.apply('elasticsearch.java') + configureLicenseAndNotice(project) project.pluginManager.apply('elasticsearch.publish') project.pluginManager.apply(DependenciesInfoPlugin) @@ -156,6 +153,7 @@ class BuildPlugin implements Plugin { } } + private static class TestFailureReportingPlugin implements Plugin { @Override void apply(Project project) { @@ -188,4 +186,32 @@ class BuildPlugin implements Plugin { private static inFipsJvm(){ return Boolean.parseBoolean(System.getProperty("tests.fips.enabled")); } + + static void configureLicenseAndNotice(Project project) { + ExtraPropertiesExtension ext = project.extensions.getByType(ExtraPropertiesExtension) + ext.set('licenseFile', null) + ext.set('noticeFile', null) + // add license/notice files + project.afterEvaluate { + project.tasks.withType(Jar).configureEach { Jar jarTask -> + if (ext.has('licenseFile') == false || ext.get('licenseFile') == null || ext.has('noticeFile') == false || ext.get('noticeFile') == null) { + throw new GradleException("Must specify license and notice file for project ${project.path}") + } + + File licenseFile = ext.get('licenseFile') as File + File noticeFile = ext.get('noticeFile') as File + + jarTask.metaInf { CopySpec spec -> + spec.from(licenseFile.parent) { CopySpec from -> + from.include licenseFile.name + from.rename { 'LICENSE.txt' } + } + spec.from(noticeFile.parent) { CopySpec from -> + from.include noticeFile.name + from.rename { 'NOTICE.txt' } + } + } + } + } + } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchJavaPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchJavaPlugin.java index 56cc9c684cafe..279596fe530cf 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchJavaPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchJavaPlugin.java @@ -41,7 +41,6 @@ import org.gradle.api.artifacts.repositories.MavenArtifactRepository; import org.gradle.api.file.FileCollection; import org.gradle.api.plugins.BasePlugin; -import org.gradle.api.plugins.ExtraPropertiesExtension; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.tasks.SourceSet; @@ -477,11 +476,10 @@ public void execute(Task t) { }); } - /** Adds additional manifest info to jars */ + /** + * Adds additional manifest info to jars + */ static void configureJars(Project project) { - ExtraPropertiesExtension ext = project.getExtensions().getExtraProperties(); - ext.set("licenseFile", null); - ext.set("noticeFile", null); project.getTasks() .withType(Jar.class) .configureEach( @@ -506,25 +504,6 @@ static void configureJars(Project project) { ); } ); - // add license/notice files - project.afterEvaluate(p -> project.getTasks().withType(Jar.class).configureEach(jarTask -> { - File licenseFile = (File) ext.get("licenseFile"); - File noticeFile = (File) ext.get("noticeFile"); - if (licenseFile == null || noticeFile == null) { - throw new GradleException("Must specify license and notice file for project"); - } - - jarTask.metaInf(spec -> { - spec.from(licenseFile.getParent(), from -> { - from.include(licenseFile.getName()); - from.rename(s -> "LICENSE.txt"); - }); - spec.from(noticeFile.getParent(), from -> { - from.include(noticeFile.getName()); - from.rename(s -> "NOTICE.txt"); - }); - }); - })); project.getPluginManager().withPlugin("com.github.johnrengelman.shadow", p -> { project.getTasks() .withType(ShadowJar.class)