diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index 115f77ef64723..c084ffed06dba 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -19,7 +19,10 @@ package org.elasticsearch.gradle import groovy.transform.CompileStatic +import org.elasticsearch.gradle.info.BuildParams import org.elasticsearch.gradle.info.GlobalBuildInfoPlugin +import org.elasticsearch.gradle.internal.InternalPlugin +import org.elasticsearch.gradle.internal.precommit.InternalPrecommitTasks import org.elasticsearch.gradle.precommit.PrecommitTasks import org.gradle.api.GradleException import org.gradle.api.InvalidUserDataException @@ -39,6 +42,7 @@ class BuildPlugin implements Plugin { void apply(Project project) { // make sure the global build info plugin is applied to the root project project.rootProject.pluginManager.apply(GlobalBuildInfoPlugin) + checkExternalInternalPluginUsages(project); if (project.pluginManager.hasPlugin('elasticsearch.standalone-rest-test')) { throw new InvalidUserDataException('elasticsearch.standalone-test, ' @@ -51,7 +55,19 @@ class BuildPlugin implements Plugin { project.pluginManager.apply(DependenciesInfoPlugin) project.pluginManager.apply(DependenciesGraphPlugin) - PrecommitTasks.create(project, true) + BuildParams.withInternalBuild { + InternalPrecommitTasks.create(project, true) + }.orElse { + PrecommitTasks.create(project) + } + } + + private static void checkExternalInternalPluginUsages(Project project) { + if (BuildParams.isInternal() == false) { + project.getPlugins().withType(InternalPlugin.class) { InternalPlugin internalPlugin -> + throw new GradleException(internalPlugin.getExternalUseErrorMessage()) + } + } } static void configureLicenseAndNotice(Project project) { @@ -81,4 +97,4 @@ class BuildPlugin implements Plugin { } } } -} +} \ No newline at end of file diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/DependenciesInfoPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/DependenciesInfoPlugin.groovy index f9c261a17036c..b19b62acb2e1c 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/DependenciesInfoPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/DependenciesInfoPlugin.groovy @@ -20,7 +20,7 @@ package org.elasticsearch.gradle import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin -import org.elasticsearch.gradle.precommit.DependencyLicensesTask +import org.elasticsearch.gradle.internal.precommit.DependencyLicensesTask import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.JavaPlugin diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/DependenciesInfoTask.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/DependenciesInfoTask.groovy index 64f82ddf1b708..0ad316750da26 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/DependenciesInfoTask.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/DependenciesInfoTask.groovy @@ -19,7 +19,7 @@ package org.elasticsearch.gradle -import org.elasticsearch.gradle.precommit.DependencyLicensesTask +import org.elasticsearch.gradle.internal.precommit.DependencyLicensesTask import org.elasticsearch.gradle.precommit.LicenseAnalyzer import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Dependency diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/PrecommitTasks.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.groovy similarity index 53% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/PrecommitTasks.groovy rename to buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.groovy index 2747b23837712..bf5291cb0818b 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/PrecommitTasks.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.groovy @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,35 +16,43 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit +package org.elasticsearch.gradle.internal.precommit -import org.gradle.api.Project +import groovy.transform.CompileStatic +import org.elasticsearch.gradle.precommit.PrecommitTasks +import org.elasticsearch.gradle.precommit.ThirdPartyAuditPrecommitPlugin; +import org.gradle.api.Project; /** - * Validation tasks which should be run before committing. These run before tests. - */ -class PrecommitTasks { + * Internal precommit plugins that adds elasticsearch project specific + * checks to the common precommit plugin. + * */ - /** Adds a precommit task, which depends on non-test verification tasks. */ +@CompileStatic +class InternalPrecommitTasks { + /** + * Adds a precommit task, which depends on non-test verification tasks. + */ static void create(Project project, boolean includeDependencyLicenses) { + PrecommitTasks.create(project); - project.pluginManager.apply(CheckstylePrecommitPlugin) - project.pluginManager.apply(ForbiddenApisPrecommitPlugin) - project.pluginManager.apply(JarHellPrecommitPlugin) - project.pluginManager.apply(ForbiddenPatternsPrecommitPlugin) - project.pluginManager.apply(LicenseHeadersPrecommitPlugin) - project.pluginManager.apply(FilePermissionsPrecommitPlugin) - project.pluginManager.apply(ThirdPartyAuditPrecommitPlugin) - project.pluginManager.apply(TestingConventionsPrecommitPlugin) + project.getPluginManager().apply(ThirdPartyAuditPrecommitPlugin.class); + project.getPluginManager().apply(CheckstylePrecommitPlugin.class); + project.getPluginManager().apply(ForbiddenApisPrecommitPlugin.class); + project.getPluginManager().apply(ForbiddenPatternsPrecommitPlugin.class); + project.getPluginManager().apply(LicenseHeadersPrecommitPlugin.class); + project.getPluginManager().apply(FilePermissionsPrecommitPlugin.class); + project.getPluginManager().apply(TestingConventionsPrecommitPlugin.class); // tasks with just tests don't need dependency licenses, so this flag makes adding // the task optional if (includeDependencyLicenses) { - project.pluginManager.apply(DependencyLicensesPrecommitPlugin) + project.getPluginManager().apply(DependencyLicensesPrecommitPlugin.class); } - if (project.path != ':build-tools') { + + if (project.getPath().equals(":build-tools") == false) { /* * Sadly, build-tools can't have logger-usage-check because that * would create a circular project dependency between build-tools @@ -55,7 +63,8 @@ class PrecommitTasks { * use the NamingConventionsCheck we break the circular dependency * here. */ - project.pluginManager.apply(LoggerUsagePrecommitPlugin) + project.getPluginManager().apply(LoggerUsagePrecommitPlugin.class); } } + } diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/LicenseHeadersPrecommitPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.groovy similarity index 87% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/LicenseHeadersPrecommitPlugin.groovy rename to buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.groovy index d942faf80e3ab..36cd58be2bc7c 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/LicenseHeadersPrecommitPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.groovy @@ -17,8 +17,10 @@ * under the License. */ -package org.elasticsearch.gradle.precommit +package org.elasticsearch.gradle.internal.precommit +import org.elasticsearch.gradle.internal.InternalPlugin +import org.elasticsearch.gradle.precommit.PrecommitPlugin import org.elasticsearch.gradle.util.GradleUtils import org.gradle.api.Project import org.gradle.api.Task @@ -28,7 +30,7 @@ import org.gradle.api.tasks.TaskProvider import javax.inject.Inject -class LicenseHeadersPrecommitPlugin extends PrecommitPlugin { +class LicenseHeadersPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { private ProviderFactory providerFactory diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/LicenseHeadersTask.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.groovy similarity index 98% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/LicenseHeadersTask.groovy rename to buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.groovy index ba8faef0314b2..2e2e2c441c3d4 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/LicenseHeadersTask.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.groovy @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit +package org.elasticsearch.gradle.internal.precommit import org.apache.rat.anttasks.Report import org.apache.rat.anttasks.SubstringLicenseMatcher diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy index 1328a51adc4c3..166a9314b2949 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/plugin/PluginBuildPlugin.groovy @@ -56,9 +56,6 @@ class PluginBuildPlugin implements Plugin { PluginPropertiesExtension extension = project.extensions.create(PLUGIN_EXTENSION_NAME, PluginPropertiesExtension, project) configureDependencies(project) - boolean isXPackModule = project.path.startsWith(':x-pack:plugin') || project.path.startsWith(':x-pack:quota-aware-fs') - boolean isModule = project.path.startsWith(':modules:') || isXPackModule - createBundleTasks(project, extension) project.afterEvaluate { @@ -104,40 +101,47 @@ class PluginBuildPlugin implements Plugin { expand(properties) inputs.properties(properties) } - if (isModule == false || isXPackModule) { - addNoticeGeneration(project, extension1) + BuildParams.withInternalBuild { + boolean isXPackModule = project.path.startsWith(':x-pack:plugin') || project.path.startsWith(':x-pack:quota-aware-fs') + boolean isModule = project.path.startsWith(':modules:') || isXPackModule + if (isModule == false || isXPackModule) { + addNoticeGeneration(project, extension1) + } } } - // We've ported this from multiple build scripts where we see this pattern into - // an extension method as a first step of consolidation. - // We might want to port this into a general pattern later on. - project.ext.addQaCheckDependencies = { - project.afterEvaluate { - // let check depend on check tasks of qa sub-projects - def checkTaskProvider = project.tasks.named("check") - def qaSubproject = project.subprojects.find { it.path == project.path + ":qa" } - if(qaSubproject) { - qaSubproject.subprojects.each {p -> - checkTaskProvider.configure {it.dependsOn(p.path + ":check") } + BuildParams.withInternalBuild { + // We've ported this from multiple build scripts where we see this pattern into + // an extension method as a first step of consolidation. + // We might want to port this into a general pattern later on. + project.ext.addQaCheckDependencies = { + project.afterEvaluate { + // let check depend on check tasks of qa sub-projects + def checkTaskProvider = project.tasks.named("check") + def qaSubproject = project.subprojects.find { it.path == project.path + ":qa" } + if(qaSubproject) { + qaSubproject.subprojects.each {p -> + checkTaskProvider.configure {it.dependsOn(p.path + ":check") } + } } } } - } - project.tasks.named('testingConventions').configure { - naming.clear() - naming { - Tests { - baseClass 'org.apache.lucene.util.LuceneTestCase' - } - IT { - baseClass 'org.elasticsearch.test.ESIntegTestCase' - baseClass 'org.elasticsearch.test.rest.ESRestTestCase' - baseClass 'org.elasticsearch.test.ESSingleNodeTestCase' + project.tasks.named('testingConventions').configure { + naming.clear() + naming { + Tests { + baseClass 'org.apache.lucene.util.LuceneTestCase' + } + IT { + baseClass 'org.elasticsearch.test.ESIntegTestCase' + baseClass 'org.elasticsearch.test.rest.ESRestTestCase' + baseClass 'org.elasticsearch.test.ESSingleNodeTestCase' + } } } } + project.configurations.getByName('default') .extendsFrom(project.configurations.getByName('runtimeClasspath')) // allow running ES with this plugin in the foreground of a build diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/StandaloneRestTestPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/StandaloneRestTestPlugin.groovy index 501d8c80b2032..22ce03c24bcee 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/StandaloneRestTestPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/StandaloneRestTestPlugin.groovy @@ -27,6 +27,7 @@ import org.elasticsearch.gradle.ExportElasticsearchBuildResourcesTask import org.elasticsearch.gradle.RepositoriesSetupPlugin import org.elasticsearch.gradle.info.BuildParams import org.elasticsearch.gradle.info.GlobalBuildInfoPlugin +import org.elasticsearch.gradle.internal.precommit.InternalPrecommitTasks import org.elasticsearch.gradle.precommit.PrecommitTasks import org.elasticsearch.gradle.testclusters.TestClustersPlugin import org.gradle.api.InvalidUserDataException @@ -54,8 +55,8 @@ class StandaloneRestTestPlugin implements Plugin { void apply(Project project) { if (project.pluginManager.hasPlugin('elasticsearch.build')) { throw new InvalidUserDataException('elasticsearch.standalone-test ' - + 'elasticsearch.standalone-rest-test, and elasticsearch.build ' - + 'are mutually exclusive') + + 'elasticsearch.standalone-rest-test, and elasticsearch.build ' + + 'are mutually exclusive') } project.rootProject.pluginManager.apply(GlobalBuildInfoPlugin) project.pluginManager.apply(JavaBasePlugin) @@ -92,6 +93,10 @@ class StandaloneRestTestPlugin implements Plugin { idea.module.testSourceDirs += testSourceSet.java.srcDirs idea.module.scopes.put('TEST', [plus: [project.configurations.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME)]] as Map>) - PrecommitTasks.create(project, false) + BuildParams.withInternalBuild { + InternalPrecommitTasks.create(project, false) + }.orElse { + PrecommitTasks.create(project) + } } } diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/StandaloneTestPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/StandaloneTestPlugin.groovy index d8daabd9ffb69..5ce9be10a1fc1 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/StandaloneTestPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/StandaloneTestPlugin.groovy @@ -20,12 +20,10 @@ package org.elasticsearch.gradle.test import groovy.transform.CompileStatic -import org.elasticsearch.gradle.BuildPlugin import org.elasticsearch.gradle.ElasticsearchJavaPlugin import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.JavaBasePlugin -import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.testing.Test /** diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/TestWithSslPlugin.java b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/TestWithSslPlugin.java index 00c233707770d..470958b2aadfe 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/TestWithSslPlugin.java +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/TestWithSslPlugin.java @@ -20,7 +20,7 @@ package org.elasticsearch.gradle.test; import org.elasticsearch.gradle.ExportElasticsearchBuildResourcesTask; -import org.elasticsearch.gradle.precommit.ForbiddenPatternsTask; +import org.elasticsearch.gradle.internal.precommit.ForbiddenPatternsTask; import org.elasticsearch.gradle.testclusters.ElasticsearchCluster; import org.elasticsearch.gradle.testclusters.TestClustersAware; import org.elasticsearch.gradle.testclusters.TestClustersPlugin; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/info/BuildParams.java b/buildSrc/src/main/java/org/elasticsearch/gradle/info/BuildParams.java index 71f7fd29189ac..e35417c6fb692 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/info/BuildParams.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/info/BuildParams.java @@ -154,6 +154,36 @@ private static String propertyName(String methodName) { return propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1); } + public static InternalMarker withInternalBuild(Runnable configBlock) { + if (isInternal()) { + configBlock.run(); + return InternalMarker.INTERNAL; + } else { + return InternalMarker.EXTERNAL; + } + } + + public enum InternalMarker { + INTERNAL(true), + EXTERNAL(false); + + private final boolean internal; + + InternalMarker(boolean internal) { + this.internal = internal; + } + + public void orElse(Runnable configBlock) { + if (internal == false) { + configBlock.run(); + } + } + + public boolean isInternal() { + return internal; + } + } + public static class MutableBuildParams { private static MutableBuildParams INSTANCE = new MutableBuildParams(); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java index e8016e162ad90..b37a5e4ba434c 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java @@ -22,7 +22,6 @@ import org.elasticsearch.gradle.VersionProperties; import org.gradle.api.Action; import org.gradle.api.GradleException; -import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.file.ArchiveOperations; @@ -42,7 +41,7 @@ import static org.elasticsearch.gradle.util.Util.capitalize; -public class InternalDistributionArchiveCheckPlugin implements Plugin { +public class InternalDistributionArchiveCheckPlugin implements InternalPlugin { private ArchiveOperations archiveOperations; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java index 8a4d61c2653f4..f8cb5e89492d4 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java @@ -22,7 +22,6 @@ import org.elasticsearch.gradle.EmptyDirTask; import org.elasticsearch.gradle.tar.SymbolicLinkPreservingTar; import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.artifacts.type.ArtifactTypeDefinition; import org.gradle.api.plugins.BasePlugin; @@ -52,7 +51,7 @@ * - the unpacked variant is used by consumers like test cluster definitions * 4. Having per-distribution sub-projects means we can build them in parallel. */ -public class InternalDistributionArchiveSetupPlugin implements Plugin { +public class InternalDistributionArchiveSetupPlugin implements InternalPlugin { public static final String DEFAULT_CONFIGURATION_NAME = "default"; public static final String EXTRACTED_CONFIGURATION_NAME = "extracted"; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java index ba93bc2b5dcc0..74e6636a4be7d 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java @@ -24,7 +24,6 @@ import org.elasticsearch.gradle.info.BuildParams; import org.elasticsearch.gradle.info.GlobalBuildInfoPlugin; import org.gradle.api.InvalidUserDataException; -import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.provider.Provider; @@ -49,7 +48,7 @@ * unreleased versions are when Gradle projects are set up, so we use "build-unreleased-version-*" as placeholders * and configure them to build various versions here. */ -public class InternalDistributionBwcSetupPlugin implements Plugin { +public class InternalDistributionBwcSetupPlugin implements InternalPlugin { private ProviderFactory providerFactory; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java index 5969afa4307e8..5c1f909341160 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java @@ -31,7 +31,6 @@ import org.elasticsearch.gradle.info.GlobalBuildInfoPlugin; import org.gradle.api.GradleException; import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.artifacts.Dependency; @@ -44,7 +43,7 @@ * distribution resolution strategies to the 'elasticsearch.download-distribution' plugin * to resolve distributions from a local snapshot or a locally built bwc snapshot. */ -public class InternalDistributionDownloadPlugin implements Plugin { +public class InternalDistributionDownloadPlugin implements InternalPlugin { private BwcVersions bwcVersions = null; @@ -52,11 +51,9 @@ public class InternalDistributionDownloadPlugin implements Plugin { public void apply(Project project) { // this is needed for isInternal project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class); - if (!BuildParams.isInternal()) { - throw new GradleException( - "Plugin 'elasticsearch.internal-distribution-download' is not supported. " - + "Use 'elasticsearch.distribution-download' plugin instead." - ); + // might be used without the general build plugin so we keep this check for now. + if (BuildParams.isInternal() == false) { + throw new GradleException(getExternalUseErrorMessage()); } project.getPluginManager().apply(DistributionDownloadPlugin.class); this.bwcVersions = BuildParams.getBwcVersions(); @@ -140,6 +137,12 @@ private static String distributionProjectPath(ElasticsearchDistribution distribu return projectPath; } + @Override + public String getExternalUseErrorMessage() { + return "Plugin 'elasticsearch.internal-distribution-download' is not supported. " + + "Use 'elasticsearch.distribution-download' plugin instead."; + } + /** * Works out the gradle project name that provides a distribution artifact. * diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java new file mode 100644 index 0000000000000..862d4cb6aa180 --- /dev/null +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java @@ -0,0 +1,29 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.elasticsearch.gradle.internal; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; + +public interface InternalPlugin extends Plugin { + default String getExternalUseErrorMessage() { + return "Usage of gradle plugin " + getClass().getName() + " is not supported."; + } +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/CheckstylePrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java similarity index 95% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/CheckstylePrecommitPlugin.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java index ba937c0245c99..9ac6a7a235a65 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/CheckstylePrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java @@ -17,9 +17,11 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.VersionProperties; +import org.elasticsearch.gradle.internal.InternalPlugin; +import org.elasticsearch.gradle.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.Util; import org.gradle.api.Action; import org.gradle.api.Project; @@ -38,7 +40,7 @@ import java.nio.file.Files; import java.nio.file.StandardCopyOption; -public class CheckstylePrecommitPlugin extends PrecommitPlugin { +public class CheckstylePrecommitPlugin extends PrecommitPlugin implements InternalPlugin { @Override public TaskProvider createTask(Project project) { // Always copy the checkstyle configuration files to 'buildDir/checkstyle' since the resources could be located in a jar diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/DependencyLicensesPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java similarity index 91% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/DependencyLicensesPrecommitPlugin.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java index 972d52e4da029..072d7498369df 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/DependencyLicensesPrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java @@ -17,9 +17,11 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin; +import org.elasticsearch.gradle.internal.InternalPlugin; +import org.elasticsearch.gradle.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; @@ -27,7 +29,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.tasks.TaskProvider; -public class DependencyLicensesPrecommitPlugin extends PrecommitPlugin { +public class DependencyLicensesPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { @Override public TaskProvider createTask(Project project) { diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/DependencyLicensesTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/DependencyLicensesTask.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java index ff1d6186a42ce..d5aaf803e2fea 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/DependencyLicensesTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,9 +16,10 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.apache.commons.codec.binary.Hex; +import org.elasticsearch.gradle.precommit.LicenseAnalyzer; import org.elasticsearch.gradle.precommit.LicenseAnalyzer.LicenseInfo; import org.gradle.api.DefaultTask; import org.gradle.api.GradleException; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/FilePermissionsPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java similarity index 90% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/FilePermissionsPrecommitPlugin.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java index f40aa3b661746..d81c6cb1184d1 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/FilePermissionsPrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java @@ -17,8 +17,10 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; +import org.elasticsearch.gradle.internal.InternalPlugin; +import org.elasticsearch.gradle.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Project; import org.gradle.api.Task; @@ -28,7 +30,7 @@ import javax.inject.Inject; import java.util.stream.Collectors; -public class FilePermissionsPrecommitPlugin extends PrecommitPlugin { +public class FilePermissionsPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { private ProviderFactory providerFactory; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/FilePermissionsTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/FilePermissionsTask.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java index c90d886a4168d..929920d703f1c 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/FilePermissionsTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import java.io.File; import java.io.IOException; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenApisPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java similarity index 96% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenApisPrecommitPlugin.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java index a15e24103eb13..c5da176ebd086 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenApisPrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java @@ -17,13 +17,15 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis; import de.thetaphi.forbiddenapis.gradle.ForbiddenApisPlugin; import groovy.lang.Closure; import org.elasticsearch.gradle.ExportElasticsearchBuildResourcesTask; import org.elasticsearch.gradle.info.BuildParams; +import org.elasticsearch.gradle.internal.InternalPlugin; +import org.elasticsearch.gradle.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.JavaVersion; import org.gradle.api.Project; @@ -38,7 +40,7 @@ import java.util.List; import java.util.Set; -public class ForbiddenApisPrecommitPlugin extends PrecommitPlugin { +public class ForbiddenApisPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { @Override public TaskProvider createTask(Project project) { project.getPluginManager().apply(ForbiddenApisPlugin.class); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java similarity index 90% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsPrecommitPlugin.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java index 324a17fa99aae..d6d95d394e131 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsPrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java @@ -17,8 +17,10 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; +import org.elasticsearch.gradle.internal.InternalPlugin; +import org.elasticsearch.gradle.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Project; import org.gradle.api.Task; @@ -28,7 +30,7 @@ import javax.inject.Inject; import java.util.stream.Collectors; -public class ForbiddenPatternsPrecommitPlugin extends PrecommitPlugin { +public class ForbiddenPatternsPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { private final ProviderFactory providerFactory; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsTask.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java index 60489f5452f69..47734b563b414 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.gradle.api.DefaultTask; import org.gradle.api.GradleException; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/LoggerUsagePrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java similarity index 77% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/LoggerUsagePrecommitPlugin.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java index f2f3d62b170b2..ea6523c092723 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/LoggerUsagePrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java @@ -17,27 +17,22 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; -import org.elasticsearch.gradle.VersionProperties; -import org.elasticsearch.gradle.info.BuildParams; +import org.elasticsearch.gradle.internal.InternalPlugin; +import org.elasticsearch.gradle.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; import org.gradle.api.tasks.TaskProvider; -public class LoggerUsagePrecommitPlugin extends PrecommitPlugin { +public class LoggerUsagePrecommitPlugin extends PrecommitPlugin implements InternalPlugin { @Override public TaskProvider createTask(Project project) { - Object dependency = BuildParams.isInternal() - ? project.project(":test:logger-usage") - : ("org.elasticsearch.test:logger-usage:" + VersionProperties.getElasticsearch()); - Configuration loggerUsageConfig = project.getConfigurations().create("loggerUsagePlugin"); - project.getDependencies().add("loggerUsagePlugin", dependency); + project.getDependencies().add("loggerUsagePlugin", project.project(":test:logger-usage")); TaskProvider loggerUsage = project.getTasks().register("loggerUsageCheck", LoggerUsageTask.class); loggerUsage.configure(t -> t.setClasspath(loggerUsageConfig)); - return loggerUsage; } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/LoggerUsageTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java similarity index 94% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/LoggerUsageTask.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java index 1a133c66326ac..9ef12eb9ede20 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/LoggerUsageTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -17,9 +17,10 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.LoggedExec; +import org.elasticsearch.gradle.precommit.PrecommitTask; import org.gradle.api.file.FileCollection; import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.CacheableTask; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionRule.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java similarity index 96% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionRule.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java index c85e74b5218e2..35fa4bdefeec9 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionRule.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import java.io.Serializable; import java.util.Collection; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionsPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java similarity index 89% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionsPrecommitPlugin.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java index c73284effb4d5..2b9c4356482af 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionsPrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java @@ -17,13 +17,15 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; +import org.elasticsearch.gradle.internal.InternalPlugin; +import org.elasticsearch.gradle.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.tasks.TaskProvider; -public class TestingConventionsPrecommitPlugin extends PrecommitPlugin { +public class TestingConventionsPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { @Override public TaskProvider createTask(Project project) { TaskProvider testingConventions = project.getTasks() diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionsTasks.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionsTasks.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java index 672bc634a505f..84d6b811185b9 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionsTasks.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import groovy.lang.Closure; import org.elasticsearch.gradle.util.GradleUtils; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/UpdateShasTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java similarity index 96% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/UpdateShasTask.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java index 65428f1788021..ff2fac3880fab 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/UpdateShasTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.gradle.api.DefaultTask; import org.gradle.api.logging.Logger; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateJsonAgainstSchemaTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateJsonAgainstSchemaTask.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java index 3b7dabe0a04f5..84d582781e5fb 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateJsonAgainstSchemaTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import com.fasterxml.jackson.databind.ObjectMapper; import com.networknt.schema.JsonSchema; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateJsonNoKeywordsTask.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateJsonNoKeywordsTask.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java index cccd50e6c8c36..e4680e4038805 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateJsonNoKeywordsTask.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.JsonNode; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateRestSpecPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java similarity index 94% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateRestSpecPlugin.java rename to buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java index 4b8768dae7954..746b3ab3095ff 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ValidateRestSpecPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java @@ -17,16 +17,16 @@ * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; +import org.elasticsearch.gradle.internal.InternalPlugin; import org.elasticsearch.gradle.util.Util; -import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.provider.Provider; import java.io.File; -public class ValidateRestSpecPlugin implements Plugin { +public class ValidateRestSpecPlugin implements InternalPlugin { private static final String DOUBLE_STAR = "**"; // checkstyle thinks these are javadocs :( @Override diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java index 4f78f6eda233a..6cb5dd7f7a2a5 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java @@ -32,12 +32,8 @@ public class JarHellPrecommitPlugin extends PrecommitPlugin { public TaskProvider createTask(Project project) { Configuration jarHellConfig = project.getConfigurations().create("jarHell"); if (BuildParams.isInternal() && project.getPath().equals(":libs:elasticsearch-core") == false) { - // External plugins will depend on this already via transitive dependencies. - // Internal projects are not all plugins, so make sure the check is available - // we are not doing this for this project itself to avoid jar hell with itself project.getDependencies().add("jarHell", project.project(":libs:elasticsearch-core")); } - TaskProvider jarHell = project.getTasks().register("jarHell", JarHellTask.class); jarHell.configure(t -> { SourceSet testSourceSet = Util.getJavaTestSourceSet(project).get(); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java new file mode 100644 index 0000000000000..952444f6801a1 --- /dev/null +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java @@ -0,0 +1,34 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.elasticsearch.gradle.precommit; + +import org.gradle.api.Project; + +/** + * Validation tasks which should be run before committing. These run before tests. + */ +public class PrecommitTasks { + /** + * Adds a precommit task, which depends on non-test verification tasks. + */ + public static void create(Project project) { + project.getPluginManager().apply(JarHellPrecommitPlugin.class); + } +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.java index 03ea3bef3ad2f..10c50e723a0af 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.java @@ -22,6 +22,7 @@ import org.elasticsearch.gradle.ExportElasticsearchBuildResourcesTask; import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin; import org.elasticsearch.gradle.info.BuildParams; +import org.elasticsearch.gradle.internal.InternalPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; @@ -29,7 +30,7 @@ import java.nio.file.Path; -public class ThirdPartyAuditPrecommitPlugin extends PrecommitPlugin { +public class ThirdPartyAuditPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { public static final String JDK_JAR_HELL_CONFIG_NAME = "jdkJarHell"; public static final String LIBS_ELASTICSEARCH_CORE_PROJECT_PATH = ":libs:elasticsearch-core"; @@ -39,9 +40,8 @@ public TaskProvider createTask(Project project) { project.getPlugins().apply(CompileOnlyResolvePlugin.class); project.getConfigurations().create("forbiddenApisCliJar"); project.getDependencies().add("forbiddenApisCliJar", "de.thetaphi:forbiddenapis:2.7"); - Configuration jdkJarHellConfig = project.getConfigurations().create(JDK_JAR_HELL_CONFIG_NAME); - if (BuildParams.isInternal() && project.getPath().equals(":libs:elasticsearch-core") == false) { + if (BuildParams.isInternal() && project.getPath().equals(LIBS_ELASTICSEARCH_CORE_PROJECT_PATH) == false) { // External plugins will depend on this already via transitive dependencies. // Internal projects are not all plugins, so make sure the check is available // we are not doing this for this project itself to avoid jar hell with itself diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/RestTestUtil.java b/buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/RestTestUtil.java index 60ae306495800..e6d1964663b8c 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/RestTestUtil.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/RestTestUtil.java @@ -77,16 +77,15 @@ static Provider registerTask(Project project, SourceSet sourc * Setup the dependencies needed for the REST tests. */ static void setupDependencies(Project project, SourceSet sourceSet) { - if (BuildParams.isInternal()) { - project.getDependencies().add(sourceSet.getImplementationConfigurationName(), project.project(":test:framework")); - } else { + BuildParams.withInternalBuild( + () -> { project.getDependencies().add(sourceSet.getImplementationConfigurationName(), project.project(":test:framework")); } + ).orElse(() -> { project.getDependencies() .add( sourceSet.getImplementationConfigurationName(), "org.elasticsearch.test:framework:" + VersionProperties.getElasticsearch() ); - } - + }); } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java index 3ac2356a5831a..ad7a6890c707f 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java @@ -72,11 +72,8 @@ protected ExecOperations getExecOperations() { @Override public void apply(Project project) { project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class); - if (BuildParams.isInternal()) { - project.getPlugins().apply(InternalDistributionDownloadPlugin.class); - } else { - project.getPlugins().apply(DistributionDownloadPlugin.class); - } + BuildParams.withInternalBuild(() -> project.getPlugins().apply(InternalDistributionDownloadPlugin.class)) + .orElse(() -> project.getPlugins().apply(DistributionDownloadPlugin.class)); project.getRootProject().getPluginManager().apply(ReaperPlugin.class); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testfixtures/TestFixturesPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/testfixtures/TestFixturesPlugin.java index 25a145098dab5..4ce277c3dfe33 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/testfixtures/TestFixturesPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/testfixtures/TestFixturesPlugin.java @@ -28,7 +28,7 @@ import org.elasticsearch.gradle.docker.DockerSupportPlugin; import org.elasticsearch.gradle.docker.DockerSupportService; import org.elasticsearch.gradle.info.BuildParams; -import org.elasticsearch.gradle.precommit.TestingConventionsTasks; +import org.elasticsearch.gradle.internal.precommit.TestingConventionsTasks; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Action; import org.gradle.api.DefaultTask; diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/elasticsearch.validate-rest-spec.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/elasticsearch.validate-rest-spec.properties index dc4099c46edf4..d11c864c3228e 100644 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/elasticsearch.validate-rest-spec.properties +++ b/buildSrc/src/main/resources/META-INF/gradle-plugins/elasticsearch.validate-rest-spec.properties @@ -1 +1 @@ -implementation-class=org.elasticsearch.gradle.precommit.ValidateRestSpecPlugin +implementation-class=org.elasticsearch.gradle.internal.precommit.ValidateRestSpecPlugin diff --git a/buildSrc/src/main/resources/checkstyle_suppressions.xml b/buildSrc/src/main/resources/checkstyle_suppressions.xml index d79d6a95e184e..25ff373d2ba46 100644 --- a/buildSrc/src/main/resources/checkstyle_suppressions.xml +++ b/buildSrc/src/main/resources/checkstyle_suppressions.xml @@ -49,5 +49,5 @@ - + diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/DependencyLicensesTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java similarity index 99% rename from buildSrc/src/test/java/org/elasticsearch/gradle/precommit/DependencyLicensesTaskTests.java rename to buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java index d26540707a158..3b5609823f289 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/DependencyLicensesTaskTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.test.GradleUnitTestCase; import org.gradle.api.Action; diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/FilePermissionsTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java similarity index 97% rename from buildSrc/src/test/java/org/elasticsearch/gradle/precommit/FilePermissionsTaskTests.java rename to buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java index 5eba355076b87..316f76c0b94e4 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/FilePermissionsTaskTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import java.io.File; import java.nio.charset.Charset; diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java similarity index 98% rename from buildSrc/src/test/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsTaskTests.java rename to buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java index b934c60163d56..ade6a7d3af0a3 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/ForbiddenPatternsTaskTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.test.GradleUnitTestCase; import org.elasticsearch.gradle.util.GradleUtils; diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/UpdateShasTaskTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java similarity index 98% rename from buildSrc/src/test/java/org/elasticsearch/gradle/precommit/UpdateShasTaskTests.java rename to buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java index 90eb1a000a75e..b10c4033f7a92 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/precommit/UpdateShasTaskTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java @@ -7,7 +7,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.precommit; import org.apache.commons.io.FileUtils; import org.elasticsearch.gradle.test.GradleUnitTestCase; diff --git a/buildSrc/src/testKit/elasticsearch.build/build.gradle b/buildSrc/src/testKit/elasticsearch.build/build.gradle index 5c993e7d63dad..06f8062e283bf 100644 --- a/buildSrc/src/testKit/elasticsearch.build/build.gradle +++ b/buildSrc/src/testKit/elasticsearch.build/build.gradle @@ -1,7 +1,11 @@ plugins { id 'java' - id 'elasticsearch.build' + id 'elasticsearch.global-build-info' } +import org.elasticsearch.gradle.info.BuildParams +BuildParams.init { it.setIsInternal(true) } + +apply plugin:'elasticsearch.build' ext.licenseFile = file("LICENSE") ext.noticeFile = file("NOTICE") @@ -46,18 +50,17 @@ repositories { } // todo remove offending rules -tasks.named('forbiddenApisMain').configure { onlyIf { false } } -tasks.named('forbiddenApisTest').configure { onlyIf { false } } + // requires dependency on testing fw -jarHell.enabled = false +tasks.named("jarHell").configure {enabled = false } // we don't have tests for now -test.enabled = false -// This requires an additional Jar not part of build-tools -loggerUsageCheck.enabled = false - +tasks.named("test").configure {enabled = false } +// we don't have tests for now +tasks.named("forbiddenApisMain").configure {enabled = false } // TODO: shouldn't be part of BuildPlugin, should be tested separately -validateNebulaPom.enabled = false - +tasks.named("validateNebulaPom").configure {enabled = false } +// requires further classpath +tasks.named("loggerUsageCheck").configure {enabled = false } tasks.register("hello") { doFirst { println "build plugin can be applied" diff --git a/buildSrc/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle b/buildSrc/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle new file mode 100644 index 0000000000000..63ac43eb3162b --- /dev/null +++ b/buildSrc/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle @@ -0,0 +1,21 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// dummy project for testing purposes +apply plugin:'java' \ No newline at end of file diff --git a/buildSrc/src/testKit/elasticsearch.build/settings.gradle b/buildSrc/src/testKit/elasticsearch.build/settings.gradle index e69de29bb2d1d..562760f613432 100644 --- a/buildSrc/src/testKit/elasticsearch.build/settings.gradle +++ b/buildSrc/src/testKit/elasticsearch.build/settings.gradle @@ -0,0 +1,2 @@ +include ":libs:elasticsearch-core" +include ":test:logger-usage" \ No newline at end of file diff --git a/buildSrc/src/testKit/elasticsearch.build/test/logger-usage/build.gradle b/buildSrc/src/testKit/elasticsearch.build/test/logger-usage/build.gradle new file mode 100644 index 0000000000000..c5bbda4b78dfc --- /dev/null +++ b/buildSrc/src/testKit/elasticsearch.build/test/logger-usage/build.gradle @@ -0,0 +1,22 @@ + +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// dummy project for testing purposes +apply plugin:'java' \ No newline at end of file diff --git a/buildSrc/src/testKit/testingConventions/build.gradle b/buildSrc/src/testKit/testingConventions/build.gradle index 2bb50da5a4ef5..fe2bc6cc093c9 100644 --- a/buildSrc/src/testKit/testingConventions/build.gradle +++ b/buildSrc/src/testKit/testingConventions/build.gradle @@ -4,7 +4,7 @@ plugins { allprojects { apply plugin: 'java' - apply plugin: 'elasticsearch.build' + apply plugin: org.elasticsearch.gradle.internal.precommit.TestingConventionsPrecommitPlugin repositories { jcenter() diff --git a/x-pack/build.gradle b/x-pack/build.gradle index 337a928f6edc3..2ed7df35f3756 100644 --- a/x-pack/build.gradle +++ b/x-pack/build.gradle @@ -1,5 +1,5 @@ import org.elasticsearch.gradle.plugin.PluginBuildPlugin -import org.elasticsearch.gradle.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.precommit.LicenseHeadersTask Project xpackRootProject = project