From b2a183baf00d685c2bcebce28bcbe06a4816cdae Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Tue, 1 Jun 2021 11:19:30 +0200 Subject: [PATCH] Move public build api into included build (#72861) This moves the public build api and plugins into a separete included build called 'build-tools' and we removed the duplication of included buildSrc twice (2nd import as build-tools). The elasticsearch internal build logic is kept in build-tools-internal as included build which allows us better handling of this project that its just being an buildSrc project (e.g. we can reference tasks directly from the root build etc.) Convention logic applied to both projects will live in a new build-conventions project. --- build-conventions/build.gradle | 53 ++++ build-conventions/settings.gradle | 8 + .../BasicBuildToolConventionsPlugin.java | 34 +++ .../gradle/internal/conventions/GUtils.java | 18 ++ .../internal/conventions/GitInfoPlugin.java | 59 ++++ .../internal/conventions/LicensingPlugin.java | 61 ++++ .../internal/conventions}/PublishPlugin.java | 102 ++++--- .../conventions/VersionPropertiesLoader.java | 65 +++++ .../internal/conventions/info/GitInfo.java | 186 ++++++++++++ .../conventions/info/ParallelDetector.java | 83 ++++++ .../LicenseHeadersPrecommitPlugin.java | 10 +- .../precommit/LicenseHeadersTask.java | 2 +- .../PomValidationPrecommitPlugin.java | 7 +- .../precommit/PomValidationTask.java | 4 +- .../precommit/PrecommitPlugin.java | 9 +- .../conventions}/precommit/PrecommitTask.java | 2 +- .../precommit/PrecommitTaskPlugin.java | 17 +- .../internal/conventions}/util/Util.java | 68 +---- {buildSrc => build-tools-internal}/.gitignore | 0 .../build.gradle | 267 ++---------------- .../elastic.importorder | 0 .../formatterConfig.xml | 0 build-tools-internal/settings.gradle | 2 + .../AbstractGitAwareGradleFuncTest.groovy | 1 + .../AbstractRestResourcesFuncTest.groovy | 0 .../ElasticsearchJavaPluginFuncTest.groovy | 0 ...ElasticsearchTestBasePluginFuncTest.groovy | 0 .../InternalBwcGitPluginFuncTest.groovy | 0 ...tributionArchiveCheckPluginFuncTest.groovy | 0 ...tributionArchiveSetupPluginFuncTest.groovy | 0 ...lDistributionBwcSetupPluginFuncTest.groovy | 0 ...lDistributionDownloadPluginFuncTest.groovy | 0 .../internal/JdkDownloadPluginFuncTest.groovy | 0 .../internal/PublishPluginFuncTest.groovy | 255 ++++++++++++----- ...censeHeadersPrecommitPluginFuncTest.groovy | 0 .../InternalTestRerunPluginFuncTest.groovy | 0 .../rest/RestResourcesPluginFuncTest.groovy | 0 .../YamlRestCompatTestPluginFuncTest.groovy | 0 .../rest/YamlRestTestPluginFuncTest.groovy | 0 .../elasticsearch/gradle/ReaperPluginIT.java | 0 .../gradle/internal/BuildPluginIT.java | 3 - ...portElasticsearchBuildResourcesTaskIT.java | 0 .../internal/SymbolicLinkPreservingTarIT.java | 0 .../internal/test/TestClasspathUtils.java | 82 ++++++ .../jarhell}/TestingConventionsTasksIT.java | 2 +- .../jarhell}/ThirdPartyAuditTaskIT.java | 96 ++++--- ...ake_elasticsearch-with-added-config.tar.gz | Bin .../fake_elasticsearch-with-added-jar.tar.gz | Bin .../gradle/fake_elasticsearch.tar.gz | Bin .../gradle/fake_elasticsearch.zip | Bin .../internal/fake_adoptopenjdk_linux.tar.gz | Bin .../internal/fake_adoptopenjdk_osx.tar.gz | Bin .../internal/fake_adoptopenjdk_windows.zip | Bin .../fake_azuljdk_linux_aarch64.tar.gz | Bin .../internal/fake_azuljdk_osx_aarch64.tar.gz | Bin .../internal/fake_git/remote/build.gradle | 0 .../src/main/resources/minimumCompilerVersion | 0 .../remote/distribution/archives/build.gradle | 0 .../archives/darwin-aarch64-tar/build.gradle | 0 .../archives/darwin-tar/build.gradle | 0 .../archives/linux-aarch64-tar/build.gradle | 0 .../oss-darwin-aarch64-tar/build.gradle | 0 .../archives/oss-darwin-tar/build.gradle | 0 .../oss-linux-aarch64-tar/build.gradle | 0 .../distribution/bwc/bugfix/build.gradle | 0 .../distribution/bwc/major/build.gradle | 0 .../distribution/bwc/minor/build.gradle | 0 .../distribution/bwc/staged/build.gradle | 0 .../fake_git/remote/gradle.properties | 0 .../internal/fake_git/remote/settings.gradle | 0 .../gradle/internal/fake_openjdk_linux.tar.gz | Bin .../gradle/internal/fake_openjdk_osx.tar.gz | Bin .../gradle/internal/fake_openjdk_windows.zip | Bin .../elasticsearch.build-complete.gradle | 0 .../groovy/elasticsearch.build-scan.gradle | 0 .../main/groovy/elasticsearch.bwc-test.gradle | 0 .../src/main/groovy/elasticsearch.fips.gradle | 0 ...lasticsearch.forbidden-dependencies.gradle | 0 .../groovy/elasticsearch.formatting.gradle | 2 +- .../src/main/groovy/elasticsearch.ide.gradle | 17 +- .../elasticsearch.local-distribution.gradle | 0 .../src/main/groovy/elasticsearch.run.gradle | 0 ...elasticsearch.runtime-jdk-provision.gradle | 2 +- .../gradle/internal/AntFixtureStop.groovy | 1 - .../gradle/internal/AntTask.groovy | 0 .../gradle/internal/doc/DocsTestPlugin.groovy | 0 .../doc/RestTestsFromSnippetsTask.groovy | 0 .../gradle/internal/doc/SnippetsTask.groovy | 0 .../gradle/internal/test/AntFixture.groovy | 0 .../gradle/internal/BuildPlugin.java | 0 .../gradle/internal/BwcGitExtension.java | 0 .../gradle/internal/BwcSetupExtension.java | 0 .../gradle/internal/BwcVersions.java | 0 .../gradle/internal/ConcatFilesTask.java | 0 .../internal/DependenciesGraphPlugin.java | 0 .../internal/DependenciesGraphTask.java | 0 .../internal/DependenciesInfoPlugin.java | 0 .../gradle/internal/DependenciesInfoTask.java | 0 .../gradle/internal/DistributionArchive.java | 0 .../DistributionArchiveCheckExtension.java | 0 .../gradle/internal/DockerBase.java | 0 .../internal/ElasticsearchJavaPlugin.java | 6 +- .../internal/ElasticsearchTestBasePlugin.java | 8 +- .../gradle/internal/EmptyDirTask.java | 0 ...ExportElasticsearchBuildResourcesTask.java | 0 .../gradle/internal}/FixtureStop.java | 2 +- ...nternalAvailableTcpPortProviderPlugin.java | 0 .../gradle/internal/InternalBwcGitPlugin.java | 4 +- ...nternalDistributionArchiveCheckPlugin.java | 7 +- ...nternalDistributionArchiveSetupPlugin.java | 2 +- .../InternalDistributionBwcSetupPlugin.java | 0 .../InternalDistributionDownloadPlugin.java | 0 .../gradle/internal/InternalPlugin.java | 0 .../internal/InternalPluginBuildPlugin.java | 2 +- .../gradle/internal/InternalReaperPlugin.java | 0 .../InternalTestArtifactBasePlugin.java | 0 .../InternalTestArtifactExtension.java | 0 .../internal/InternalTestArtifactPlugin.java | 0 .../internal/InternalTestClustersPlugin.java | 0 .../gradle/internal/JavaClassPublicifier.java | 0 .../elasticsearch/gradle/internal/Jdk.java | 0 .../gradle/internal/JdkDownloadPlugin.java | 0 .../gradle/internal/LoggingOutputStream.java | 0 .../gradle/internal/MavenFilteringHack.java | 0 .../gradle/internal/NoticeTask.java | 2 +- .../internal/RepositoriesSetupPlugin.java | 21 -- .../internal/ResolveAllDependencies.java | 0 .../internal/SymbolicLinkPreservingTar.java | 0 .../checkstyle/MissingJavadocTypeCheck.java | 0 .../checkstyle/SnippetLengthCheck.java | 0 .../DebElasticsearchDistributionType.java | 0 .../DockerElasticsearchDistributionType.java | 0 ...IronBankElasticsearchDistributionType.java | 0 ...ockerUbiElasticsearchDistributionType.java | 0 ...nternalElasticsearchDistributionTypes.java | 0 .../RpmElasticsearchDistributionType.java | 0 .../internal/docker/DockerBuildTask.java | 0 .../internal/docker/DockerSupportPlugin.java | 0 .../internal/docker/DockerSupportService.java | 0 .../gradle/internal/docker/ShellRetry.java | 0 .../docker/TransformLog4jConfigFilter.java | 0 .../gradle/internal/info/BuildParams.java | 0 .../internal/info/GlobalBuildInfoPlugin.java | 173 ++---------- .../gradle/internal/info/JavaHome.java | 0 .../precommit/CheckstylePrecommitPlugin.java | 17 +- .../DependencyLicensesPrecommitPlugin.java | 2 +- .../precommit/DependencyLicensesTask.java | 0 .../FilePermissionsPrecommitPlugin.java | 2 +- .../precommit/FilePermissionsTask.java | 0 .../ForbiddenApisPrecommitPlugin.java | 2 +- .../ForbiddenPatternsPrecommitPlugin.java | 2 +- .../precommit/ForbiddenPatternsTask.java | 0 .../precommit/InternalPrecommitTasks.java | 11 +- .../precommit/JarHellPrecommitPlugin.java | 33 +++ .../internal/precommit/LicenseAnalyzer.java | 0 .../precommit/LoggerUsagePrecommitPlugin.java | 2 +- .../internal/precommit/LoggerUsageTask.java | 2 +- .../precommit/TestingConventionRule.java | 0 .../TestingConventionsPrecommitPlugin.java | 2 +- .../precommit/TestingConventionsTasks.java | 2 +- .../ThirdPartyAuditPrecommitPlugin.java | 2 +- .../precommit/ThirdPartyAuditTask.java | 0 .../internal/precommit/UpdateShasTask.java | 0 .../ValidateJsonAgainstSchemaTask.java | 0 .../precommit/ValidateJsonNoKeywordsTask.java | 0 .../precommit/ValidateRestSpecPlugin.java | 2 +- .../compat/RestCompatTestTransformTask.java | 0 .../rest/compat/YamlRestCompatTestPlugin.java | 0 .../internal/test/DistroTestPlugin.java | 5 +- .../test/ErrorReportingTestListener.java | 0 .../gradle/internal/test/Fixture.java | 0 .../internal/test/GradleDistroTestTask.java | 0 .../test/InternalClusterTestPlugin.java | 0 .../internal/test/RestIntegTestTask.java | 0 .../internal/test/RestTestBasePlugin.java | 2 +- .../gradle/internal/test/RestTestPlugin.java | 0 .../SimpleCommandLineArgumentProvider.java | 0 .../test/StandaloneRestTestPlugin.java | 3 +- .../internal/test/StandaloneTestPlugin.java | 0 ...emPropertyCommandLineArgumentProvider.java | 0 .../test/TestWithDependenciesPlugin.java | 0 .../internal/test/TestWithSslPlugin.java | 2 +- .../internal/test/rerun/TestRerunPlugin.java | 0 .../test/rerun/TestRerunTaskExtension.java | 0 .../test/rerun/TestTaskConfigurer.java | 0 .../rerun/executer/RerunTestExecuter.java | 0 .../executer/RerunTestResultProcessor.java | 0 .../internal/test/rest/CopyRestApiTask.java | 0 .../internal/test/rest/CopyRestTestsTask.java | 0 .../test/rest/JavaRestTestPlugin.java | 0 .../test/rest/RestResourcesExtension.java | 0 .../test/rest/RestResourcesPlugin.java | 0 .../internal/test/rest/RestTestUtil.java | 0 .../test/rest/YamlRestTestPlugin.java | 0 .../test/rest/transform/ReplaceByKey.java | 0 .../test/rest/transform/RestTestContext.java | 0 .../rest/transform/RestTestTransform.java | 0 .../RestTestTransformByParentArray.java | 0 .../RestTestTransformByParentObject.java | 0 .../RestTestTransformGlobalSetup.java | 0 .../RestTestTransformGlobalTeardown.java | 0 .../rest/transform/RestTestTransformer.java | 0 .../rest/transform/do_/ReplaceKeyInDo.java | 0 .../transform/feature/FeatureInjector.java | 0 .../rest/transform/headers/InjectHeaders.java | 0 .../transform/length/ReplaceKeyInLength.java | 0 .../test/rest/transform/match/AddMatch.java | 0 .../rest/transform/match/RemoveMatch.java | 0 .../transform/match/ReplaceKeyInMatch.java | 0 .../transform/match/ReplaceValueInMatch.java | 0 .../rest/transform/text/ReplaceIsFalse.java | 0 .../rest/transform/text/ReplaceIsTrue.java | 0 .../rest/transform/text/ReplaceTextual.java | 0 .../warnings/InjectAllowedWarnings.java | 0 .../transform/warnings/InjectWarnings.java | 0 .../transform/warnings/RemoveWarnings.java | 0 .../testfixtures/DockerComposeThrottle.java | 0 .../testfixtures/TestFixtureExtension.java | 0 .../testfixtures/TestFixturesPlugin.java | 0 .../gradle/internal/util/JavaUtil.java | 0 .../util/ports/AvailablePortAllocator.java | 0 .../util/ports/DefaultPortDetector.java | 0 .../DefaultReservedPortRangeFactory.java | 0 .../internal/util/ports/PortDetector.java | 0 .../util/ports/ReservedPortRange.java | 0 .../util/ports/ReservedPortRangeFactory.java | 0 .../internal/vagrant/VagrantBasePlugin.java | 0 .../internal/vagrant/VagrantExtension.java | 0 .../internal/vagrant/VagrantMachine.java | 2 +- .../vagrant/VagrantProgressLogger.java | 0 .../internal/vagrant/VagrantShellTask.java | 0 .../src/main/resources/buildSrc.marker | 0 .../src/main/resources/cacerts.bcfks | Bin .../src/main/resources/checkstyle.xml | 0 .../resources/checkstyle_ide_fragment.xml | 0 .../resources/checkstyle_suppressions.xml | 2 +- .../src/main/resources/deb/README | 0 .../src/main/resources/deb/conffiles.ftl | 0 .../src/main/resources/deb/postinst.ftl | 0 .../src/main/resources/deb/preinst.ftl | 0 .../org.eclipse.core.resources.prefs | 0 .../org.eclipse.jdt.core.prefs | 0 .../eclipse.settings/org.eclipse.jdt.ui.prefs | 0 .../main/resources/elasticsearch.properties | 0 .../src/main/resources/fips_java.policy | 0 .../src/main/resources/fips_java.security | 0 .../main/resources/fips_java_oracle.security | 0 .../resources/forbidden/es-all-signatures.txt | 0 .../forbidden/es-server-signatures.txt | 0 .../forbidden/es-test-signatures.txt | 0 .../resources/forbidden/http-signatures.txt | 0 .../resources/forbidden/jdk-signatures.txt | 0 .../forbidden/snakeyaml-signatures.txt | 0 .../resources/forbidden/third-party-audit.txt | 0 .../elastic-license-2.0-header.txt | 0 .../sspl+elastic-license-header.txt | 0 .../src/main/resources/minimumCompilerVersion | 0 .../src/main/resources/minimumGradleVersion | 0 .../src/main/resources/minimumRuntimeVersion | 0 .../src/main/resources/test/ssl/README.md | 0 .../main/resources/test/ssl/test-client.crt | Bin .../main/resources/test/ssl/test-client.jks | Bin .../main/resources/test/ssl/test-client.key | 0 .../src/main/resources/test/ssl/test-node.crt | Bin .../src/main/resources/test/ssl/test-node.jks | Bin .../src/main/resources/test/ssl/test-node.key | 0 .../RerunTestResultProcessorTestSpec.groovy | 0 ...stractDistributionDownloadPluginTests.java | 0 .../DistributionDownloadPluginTests.java | 0 .../elasticsearch/gradle/VersionTests.java | 0 .../gradle/internal/BwcVersionsTests.java | 0 .../gradle/internal/ConcatFilesTaskTests.java | 0 .../gradle/internal/EmptyDirTaskTests.java | 0 ...ternalDistributionDownloadPluginTests.java | 0 .../internal/JdkDownloadPluginTests.java | 0 .../checkstyle/SnipptLengthCheckTests.java | 0 .../doc/RestTestFromSnippetsTaskTests.java | 0 .../internal/doc/SnippetsTaskTests.java | 0 .../docker/DockerSupportServiceTests.java | 0 .../TransformLog4jConfigFilterTests.java | 0 .../DependencyLicensesTaskTests.java | 0 .../precommit/FilePermissionsTaskTests.java | 0 .../precommit/ForbiddenPatternsTaskTests.java | 0 .../precommit/UpdateShasTaskTests.java | 0 .../rest/transform/AssertObjectNodes.java | 0 .../test/rest/transform/TransformTests.java | 0 .../transform/do_/ReplaceKeyInDoTests.java | 0 .../transform/feature/InjectFeatureTests.java | 0 .../transform/header/InjectHeaderTests.java | 0 .../length/ReplaceKeyInLengthTests.java | 0 .../rest/transform/match/AddMatchTests.java | 0 .../transform/match/RemoveMatchTests.java | 0 .../match/ReplaceKeyInMatchTests.java | 0 .../match/ReplaceValueInMatchTests.java | 0 .../transform/text/ReplaceTextualTests.java | 0 .../InjectAllowedWarningsRegexTests.java | 0 .../warnings/InjectAllowedWarningsTests.java | 0 .../warnings/InjectWarningsRegexTests.java | 0 .../warnings/InjectWarningsTests.java | 0 .../warnings/RemoveWarningsTests.java | 0 .../PluginPropertiesExtensionTests.java | 0 .../WaitForHttpResourceTests.java | 0 .../src/test/resources/ca.p12 | Bin .../src/test/resources/ca.pem | 0 .../do/replace_key_in_do_original.yml | 0 .../do/replace_key_in_do_transformed.yml | 0 .../feature/with_feature_predefined.yml | 0 .../feature/with_multiple_feature.yml | 0 .../feature/with_setup_no_feature.yml | 0 .../transform/feature/with_setup_no_skip.yml | 0 .../transform/feature/with_single_feature.yml | 0 .../rest/transform/feature/without_setup.yml | 0 .../header/with_existing_headers.yml | 0 .../header/without_existing_headers.yml | 0 .../length/length_replace_original.yml | 0 .../length/length_replace_transformed.yml | 0 .../replace_key_in_match_original.yml | 0 .../replace_key_in_match_transformed.yml | 0 .../rest/transform/match/match_original.yml | 0 .../transform/match/match_transformed.yml | 0 .../transform/text/text_replace_original.yml | 0 .../text/text_replace_transformed.yml | 0 .../with_existing_allowed_warnings.yml | 0 .../with_existing_single_warnings.yml | 0 .../warnings/with_existing_warnings.yml | 0 .../warnings/without_existing_warnings.yml | 0 .../build.gradle | 0 .../gradle.properties | 0 .../settings.gradle | 0 .../src/testKit/elasticsearch.build/LICENSE | 0 .../src/testKit/elasticsearch.build/NOTICE | 0 .../testKit/elasticsearch.build/build.gradle | 0 .../elasticsearch.build/gradle.properties | 0 .../libs/elasticsearch-core/build.gradle | 0 .../licenses/hamcrest-core-1.3.jar.sha1 | 0 .../licenses/hamcrest-core-LICENSE.txt | 0 .../licenses/hamcrest-core-NOTICE.txt | 0 .../licenses/junit-4.12.jar.sha1 | 0 .../licenses/junit-LICENSE.txt | 0 .../licenses/junit-NOTICE.txt | 0 .../elasticsearch.build/settings.gradle | 0 .../java/org/elasticsearch/SampleClass.java | 0 .../test/logger-usage/build.gradle | 0 .../src/testKit/reaper/build.gradle | 0 .../src/testKit/reaper/gradle.properties | 0 .../src/testKit/reaper/settings.gradle | 0 .../symbolic-link-preserving-tar/build.gradle | 0 .../settings.gradle | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../testKit/testingConventions/build.gradle | 0 .../empty_test_task/.gitignore | 0 ...ooksLikeATestWithoutNamingConvention1.java | 0 ...ooksLikeATestWithoutNamingConvention2.java | 0 ...ooksLikeATestWithoutNamingConvention3.java | 0 .../testkit/LooksLikeTestsButAbstract.java | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../gradle/testkit/NastyInnerClasses.java | 0 .../gradle/testkit/AbstractIT.java | 0 .../gradle/testkit/Integration.java | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../testkit/NamingConventionMissmatchIT.java | 0 .../NamingConventionMissmatchTests.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../elasticsearch/gradle/testkit/Unit.java | 0 .../testingConventions/settings.gradle | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../gradle/testkit/Integration.java | 0 .../gradle/testkit/NamingConventionIT.java | 0 .../gradle/testkit/NamingConventionTests.java | 0 .../elasticsearch/gradle/testkit/Unit.java | 0 .../src/testKit/thirdPartyAudit/build.gradle | 0 .../testKit/thirdPartyAudit/gradle.properties | 0 .../thirdPartyAudit/sample_jars/build.gradle | 0 .../sample_jars/src/main/java/String.java | 0 .../sample_jars/src/main/java/TestingIO.java | 0 .../src/main/java/TestingLog4j.java | 0 .../testKit/thirdPartyAudit/settings.gradle | 0 .../third-party-audit-absurd.txt | 0 .../third-party-audit-empty.txt | 0 build-tools-internal/version.properties | 56 ++++ build-tools/build.gradle | 218 ++++++++++++++ {buildSrc => build-tools}/reaper/build.gradle | 4 + .../elasticsearch/gradle/reaper/Reaper.java | 0 build-tools/settings.gradle | 8 + .../DistributionDownloadPluginFuncTest.groovy | 0 .../gradle/TestClustersPluginFuncTest.groovy | 0 .../elasticsearch/gradle/ReaperPluginIT.java | 25 ++ ...ake_elasticsearch-with-added-config.tar.gz | Bin 0 -> 1236 bytes .../fake_elasticsearch-with-added-jar.tar.gz | Bin 0 -> 1674 bytes .../gradle/fake_elasticsearch.tar.gz | Bin 0 -> 1174 bytes .../gradle/fake_elasticsearch.zip | Bin 0 -> 568 bytes .../AbstractLazyPropertyCollection.java | 0 .../elasticsearch/gradle/Architecture.java | 0 .../gradle/DistributionDependency.java | 0 .../gradle/DistributionDownloadPlugin.java | 0 .../gradle/DistributionResolution.java | 0 .../gradle/ElasticsearchDistribution.java | 0 .../gradle/ElasticsearchDistributionType.java | 0 .../elasticsearch/gradle/FileSupplier.java | 0 .../gradle/FileSystemOperationsAware.java | 0 .../gradle/LazyFileOutputStream.java | 0 .../gradle/LazyPropertyList.java | 0 .../elasticsearch/gradle/LazyPropertyMap.java | 0 .../org/elasticsearch/gradle/LoggedExec.java | 0 .../java/org/elasticsearch/gradle/OS.java | 0 .../gradle/PropertyNormalization.java | 0 .../elasticsearch/gradle/ReaperPlugin.java | 5 +- .../elasticsearch/gradle/ReaperService.java | 1 + .../org/elasticsearch/gradle/Version.java | 0 .../gradle/VersionProperties.java | 0 .../CompileOnlyResolvePlugin.java | 0 .../ArchiveElasticsearchDistributionType.java | 0 .../ElasticsearchDistributionTypes.java | 0 ...gTestZipElasticsearchDistributionType.java | 0 .../gradle/jarhell/JarHellPlugin.java | 50 ++++ .../gradle/jarhell}/JarHellTask.java | 27 +- .../gradle/plugin/PluginBuildPlugin.java | 4 +- .../plugin/PluginPropertiesExtension.java | 0 .../gradle/plugin/PluginType.java | 0 .../testclusters/DefaultTestClustersTask.java | 0 .../testclusters/ElasticsearchCluster.java | 0 .../testclusters/ElasticsearchNode.java | 0 .../gradle/testclusters/RunTask.java | 0 .../StandaloneRestIntegTestTask.java | 0 .../TestClusterConfiguration.java | 0 .../testclusters/TestClustersAware.java | 0 .../testclusters/TestClustersException.java | 0 .../testclusters/TestClustersPlugin.java | 0 .../testclusters/TestClustersRegistry.java | 0 .../testclusters/TestClustersThrottle.java | 0 .../gradle/testclusters/TestDistribution.java | 0 .../testclusters/WaitForHttpResource.java | 0 .../SymbolicLinkPreservingUntarTransform.java | 0 .../gradle/transform/UnpackTransform.java | 0 .../gradle/transform/UnzipTransform.java | 0 .../elasticsearch/gradle}/util/FileUtils.java | 2 +- .../gradle/util/GradleUtils.java | 0 .../org/elasticsearch/gradle/util/Pair.java | 0 .../gradle/util/PermissionUtils.java | 0 .../resources/plugin-descriptor.properties | 63 +++++ .../DistributionDownloadPluginTests.java | 170 +++++++++++ .../elasticsearch/gradle/VersionTests.java | 115 ++++++++ .../PluginPropertiesExtensionTests.java | 47 +++ .../WaitForHttpResourceTests.java | 49 ++++ build-tools/src/test/resources/ca.p12 | Bin 0 -> 1130 bytes build-tools/src/test/resources/ca.pem | 25 ++ .../fixtures/AbstractGradleFuncTest.groovy | 7 +- .../DistributionDownloadFixture.groovy | 0 .../gradle/fixtures/WiremockFixture.groovy | 0 .../gradle/internal/test/BaseTestCase.java | 0 .../test/GradleIntegrationTestCase.java | 6 +- .../internal/test/GradleThreadsFilter.java | 0 .../internal/test/GradleUnitTestCase.java | 0 .../test/InternalAwareGradleRunner.java | 141 +++++++++ .../internal/test/JUnit3MethodProvider.java | 0 .../internal/test/TestClasspathUtils.java | 0 build-tools/src/testKit/reaper/build.gradle | 15 + .../src/testKit/reaper/gradle.properties | 11 + .../src/testKit/reaper/settings.gradle | 0 build.gradle | 64 ++--- buildSrc/settings.gradle | 1 - .../precommit/JarHellPrecommitPlugin.java | 31 -- .../gradle/precommit/PrecommitTasks.java | 23 -- buildSrc/version.properties | 8 +- client/rest-high-level/build.gradle | 2 +- client/rest/build.gradle | 4 +- client/sniffer/build.gradle | 4 +- client/test/build.gradle | 4 +- rest-api-spec/build.gradle | 2 +- settings.gradle | 10 +- x-pack/build.gradle | 6 +- x-pack/plugin/autoscaling/build.gradle | 1 - 477 files changed, 2207 insertions(+), 844 deletions(-) create mode 100644 build-conventions/build.gradle create mode 100644 build-conventions/settings.gradle create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/BasicBuildToolConventionsPlugin.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GUtils.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/PublishPlugin.java (55%) create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/VersionPropertiesLoader.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java create mode 100644 build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/LicenseHeadersPrecommitPlugin.java (80%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/LicenseHeadersTask.java (99%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PomValidationPrecommitPlugin.java (87%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PomValidationTask.java (95%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PrecommitPlugin.java (79%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PrecommitTask.java (94%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/precommit/PrecommitTaskPlugin.java (71%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions}/util/Util.java (65%) rename {buildSrc => build-tools-internal}/.gitignore (100%) rename {buildSrc => build-tools-internal}/build.gradle (53%) rename {buildSrc => build-tools-internal}/elastic.importorder (100%) rename {buildSrc => build-tools-internal}/formatterConfig.xml (100%) create mode 100644 build-tools-internal/settings.gradle rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy (96%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy (58%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy (100%) rename {buildSrc => build-tools-internal}/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java (100%) rename {buildSrc => build-tools-internal}/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java (99%) rename {buildSrc => build-tools-internal}/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java (100%) rename {buildSrc => build-tools-internal}/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java (100%) create mode 100644 build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java rename {buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit => build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell}/TestingConventionsTasksIT.java (99%) rename {buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit => build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell}/ThirdPartyAuditTaskIT.java (55%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz (100%) rename {buildSrc => build-tools-internal}/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.build-complete.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.build-scan.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.bwc-test.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.fips.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.forbidden-dependencies.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.formatting.gradle (98%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.ide.gradle (94%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.local-distribution.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.run.gradle (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle (96%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy (97%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java (100%) rename {buildSrc/src/main/java/org/elasticsearch/gradle => build-tools-internal/src/main/java/org/elasticsearch/gradle/internal}/FixtureStop.java (90%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/Jdk.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java (99%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java (75%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java (70%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java (88%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java (96%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java (95%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java (95%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java (78%) create mode 100644 build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/JarHellPrecommitPlugin.java rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java (94%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java (94%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java (99%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/rest/compat/RestCompatTestTransformTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/rest/compat/YamlRestCompatTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java (99%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java (97%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java (98%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestContext.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentArray.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentObject.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDo.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/FeatureInjector.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/headers/InjectHeaders.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLength.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatch.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatch.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarnings.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarnings.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarnings.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java (99%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java (100%) rename {buildSrc => build-tools-internal}/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java (100%) rename {buildSrc => build-tools-internal}/src/main/resources/buildSrc.marker (100%) rename {buildSrc => build-tools-internal}/src/main/resources/cacerts.bcfks (100%) rename {buildSrc => build-tools-internal}/src/main/resources/checkstyle.xml (100%) rename {buildSrc => build-tools-internal}/src/main/resources/checkstyle_ide_fragment.xml (100%) rename {buildSrc => build-tools-internal}/src/main/resources/checkstyle_suppressions.xml (96%) rename {buildSrc => build-tools-internal}/src/main/resources/deb/README (100%) rename {buildSrc => build-tools-internal}/src/main/resources/deb/conffiles.ftl (100%) rename {buildSrc => build-tools-internal}/src/main/resources/deb/postinst.ftl (100%) rename {buildSrc => build-tools-internal}/src/main/resources/deb/preinst.ftl (100%) rename {buildSrc => build-tools-internal}/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs (100%) rename {buildSrc => build-tools-internal}/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs (100%) rename {buildSrc => build-tools-internal}/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs (100%) rename {buildSrc => build-tools-internal}/src/main/resources/elasticsearch.properties (100%) rename {buildSrc => build-tools-internal}/src/main/resources/fips_java.policy (100%) rename {buildSrc => build-tools-internal}/src/main/resources/fips_java.security (100%) rename {buildSrc => build-tools-internal}/src/main/resources/fips_java_oracle.security (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/es-all-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/es-server-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/es-test-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/http-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/jdk-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/snakeyaml-signatures.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/forbidden/third-party-audit.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/license-headers/elastic-license-2.0-header.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/license-headers/sspl+elastic-license-header.txt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/minimumCompilerVersion (100%) rename {buildSrc => build-tools-internal}/src/main/resources/minimumGradleVersion (100%) rename {buildSrc => build-tools-internal}/src/main/resources/minimumRuntimeVersion (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/README.md (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-client.crt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-client.jks (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-client.key (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-node.crt (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-node.jks (100%) rename {buildSrc => build-tools-internal}/src/main/resources/test/ssl/test-node.key (100%) rename {buildSrc => build-tools-internal}/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/VersionTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/AssertObjectNodes.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/TransformTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDoTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/InjectFeatureTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/header/InjectHeaderTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLengthTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatchTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatchTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsRegexTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsRegexTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarningsTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java (100%) rename {buildSrc => build-tools-internal}/src/test/resources/ca.p12 (100%) rename {buildSrc => build-tools-internal}/src/test/resources/ca.pem (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/do/replace_key_in_do_original.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/do/replace_key_in_do_transformed.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/feature/with_feature_predefined.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/feature/with_multiple_feature.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/feature/with_setup_no_feature.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/feature/with_setup_no_skip.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/feature/with_single_feature.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/feature/without_setup.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/header/with_existing_headers.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/header/without_existing_headers.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/length/length_replace_original.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/length/length_replace_transformed.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_original.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_transformed.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/match/match_original.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/match/match_transformed.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/text/text_replace_original.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/text/text_replace_transformed.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/warnings/with_existing_allowed_warnings.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/warnings/with_existing_single_warnings.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/warnings/with_existing_warnings.yml (100%) rename {buildSrc => build-tools-internal}/src/test/resources/rest/transform/warnings/without_existing_warnings.yml (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch-build-resources/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch-build-resources/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch-build-resources/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/LICENSE (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/NOTICE (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/elasticsearch.build/test/logger-usage/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/reaper/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/reaper/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/testKit/reaper/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/symbolic-link-preserving-tar/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/symbolic-link-preserving-tar/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/empty_test_task/.gitignore (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/gradle.properties (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/sample_jars/build.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/settings.gradle (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt (100%) rename {buildSrc => build-tools-internal}/src/testKit/thirdPartyAudit/third-party-audit-empty.txt (100%) create mode 100644 build-tools-internal/version.properties create mode 100644 build-tools/build.gradle rename {buildSrc => build-tools}/reaper/build.gradle (86%) rename {buildSrc => build-tools}/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java (100%) create mode 100644 build-tools/settings.gradle rename {buildSrc => build-tools}/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy (100%) rename {buildSrc => build-tools}/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy (100%) create mode 100644 build-tools/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java create mode 100644 build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz create mode 100644 build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz create mode 100644 build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz create mode 100644 build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/Architecture.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/DistributionDependency.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/DistributionResolution.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/FileSupplier.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/LoggedExec.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/OS.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java (92%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/ReaperService.java (99%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/Version.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/VersionProperties.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/dependencies/CompileOnlyResolvePlugin.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/distribution/ElasticsearchDistributionTypes.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/distribution/IntegTestZipElasticsearchDistributionType.java (100%) create mode 100644 build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellPlugin.java rename {buildSrc/src/main/java/org/elasticsearch/gradle/precommit => build-tools/src/main/java/org/elasticsearch/gradle/jarhell}/JarHellTask.java (69%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java (99%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java (100%) rename {buildSrc/src/main/java/org/elasticsearch/gradle/internal => build-tools/src/main/java/org/elasticsearch/gradle}/util/FileUtils.java (98%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/util/Pair.java (100%) rename {buildSrc => build-tools}/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java (100%) create mode 100644 build-tools/src/main/resources/plugin-descriptor.properties create mode 100644 build-tools/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java create mode 100644 build-tools/src/test/java/org/elasticsearch/gradle/VersionTests.java create mode 100644 build-tools/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java create mode 100644 build-tools/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java create mode 100644 build-tools/src/test/resources/ca.p12 create mode 100644 build-tools/src/test/resources/ca.pem rename {buildSrc/src/integTest => build-tools/src/testFixtures}/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy (96%) rename {buildSrc/src/integTest => build-tools/src/testFixtures}/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy (100%) rename {buildSrc/src/integTest => build-tools/src/testFixtures}/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy (100%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java (100%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java (98%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java (100%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java (100%) create mode 100644 build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java (100%) rename {buildSrc => build-tools}/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java (100%) create mode 100644 build-tools/src/testKit/reaper/build.gradle create mode 100644 build-tools/src/testKit/reaper/gradle.properties create mode 100644 build-tools/src/testKit/reaper/settings.gradle delete mode 100644 buildSrc/settings.gradle delete mode 100644 buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java diff --git a/build-conventions/build.gradle b/build-conventions/build.gradle new file mode 100644 index 0000000000000..3e1bf5a641a34 --- /dev/null +++ b/build-conventions/build.gradle @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +plugins { + id 'java-gradle-plugin' + id 'java-test-fixtures' +} + +group = "org.elasticsearch" + +def minRuntimeJava = JavaVersion.toVersion(file('../build-tools-internal/src/main/resources/minimumRuntimeVersion').text) +targetCompatibility = minRuntimeJava +sourceCompatibility = minRuntimeJava + +gradlePlugin { + // We already configure publication and we don't need or want the one that comes + // with the java-gradle-plugin + automatedPublishing = false + plugins { + internalLicenseheaders { + id = 'elasticsearch.internal-licenseheaders' + implementationClass = 'org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersPrecommitPlugin' + } + publish { + id = 'elasticsearch.publish' + implementationClass = 'org.elasticsearch.gradle.internal.conventions.PublishPlugin' + } + licensing { + id = 'elasticsearch.licensing' + implementationClass = 'org.elasticsearch.gradle.internal.conventions.LicensingPlugin' + } + basics { + id = 'elasticsearch.basic-build-tool-conventions' + implementationClass = 'org.elasticsearch.gradle.internal.conventions.BasicBuildToolConventionsPlugin' + } + } +} + +repositories { + mavenCentral() + gradlePluginPortal() +} + +dependencies { + api 'org.apache.maven:maven-model:3.6.2' + api 'gradle.plugin.com.github.jengelman.gradle.plugins:shadow:7.0.0' + api 'org.apache.rat:apache-rat:0.11' +} diff --git a/build-conventions/settings.gradle b/build-conventions/settings.gradle new file mode 100644 index 0000000000000..c69e832a21a77 --- /dev/null +++ b/build-conventions/settings.gradle @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +rootProject.name = 'build-conventions' \ No newline at end of file diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/BasicBuildToolConventionsPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/BasicBuildToolConventionsPlugin.java new file mode 100644 index 0000000000000..2c0f95e880a46 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/BasicBuildToolConventionsPlugin.java @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + +import org.elasticsearch.gradle.internal.conventions.info.ParallelDetector; +import org.elasticsearch.gradle.internal.conventions.util.Util; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.tasks.bundling.Jar; +import org.gradle.api.tasks.testing.Test; + +import java.io.File; + +public class BasicBuildToolConventionsPlugin implements Plugin { + + @Override + public void apply(Project project) { + int defaultParallel = ParallelDetector.findDefaultParallel(project); + project.getTasks().withType(Test.class).configureEach(test -> { + test.onlyIf((t) -> Util.getBooleanProperty("tests.fips.enabled", false) == false); + test.setMaxParallelForks(defaultParallel); + }); + // we put all our distributable files under distributions + project.getTasks().withType(Jar.class).configureEach(j -> + j.getDestinationDirectory().set(new File(project.getBuildDir(), "distributions")) + ); + } +} diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GUtils.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GUtils.java new file mode 100644 index 0000000000000..fdfa6d942ab0b --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GUtils.java @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + +import java.util.Locale; + +public abstract class GUtils { + + public static String capitalize(String s) { + return s.substring(0, 1).toUpperCase(Locale.ROOT) + s.substring(1); + } +} diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java new file mode 100644 index 0000000000000..dbc36e25dd751 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/GitInfoPlugin.java @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + +import org.elasticsearch.gradle.internal.conventions.info.GitInfo; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.model.ObjectFactory; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.Provider; +import org.gradle.api.provider.ProviderFactory; +import org.gradle.initialization.layout.BuildLayout; + +import javax.inject.Inject; +import java.io.File; + +class GitInfoPlugin implements Plugin { + + private ProviderFactory factory; + private ObjectFactory objectFactory; + + private Provider revision; + private Property gitInfo; + + @Inject + public GitInfoPlugin(ProviderFactory factory, ObjectFactory objectFactory) { + this.factory = factory; + this.objectFactory = objectFactory; + } + + @Override + public void apply(Project project) { + File rootDir = (project.getGradle().getParent() == null) ? + project.getRootDir() : + project.getGradle().getParent().getRootProject().getRootDir(); + + gitInfo = objectFactory.property(GitInfo.class).value(factory.provider(() -> + GitInfo.gitInfo(rootDir) + )); + gitInfo.disallowChanges(); + gitInfo.finalizeValueOnRead(); + + revision = gitInfo.map(info -> info.getRevision() == null ? info.getRevision() : "master"); + } + + public Property getGitInfo() { + return gitInfo; + } + + public Provider getRevision() { + return revision; + } +} diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java new file mode 100644 index 0000000000000..96b9419ea1828 --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/LicensingPlugin.java @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.provider.MapProperty; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.Provider; +import org.gradle.api.provider.ProviderFactory; + +import javax.inject.Inject; +import java.util.Map; +import java.util.concurrent.Callable; + +public class LicensingPlugin implements Plugin { + final static String ELASTIC_LICENSE_URL_PREFIX = "https://raw.githubusercontent.com/elastic/elasticsearch/"; + final static String ELASTIC_LICENSE_URL_POSTFIX = "/licenses/ELASTIC-LICENSE-2.0.txt"; + + private ProviderFactory providerFactory; + + @Inject + public LicensingPlugin(ProviderFactory providerFactory) { + this.providerFactory = providerFactory; + } + + @Override + public void apply(Project project) { + Provider revision = project.getRootProject().getPlugins().apply(GitInfoPlugin.class).getRevision(); + Provider licenseCommitProvider = providerFactory.provider(() -> + isSnapshotVersion(project) ? revision.get() : "v" + project.getVersion().toString() + ); + + MapProperty licensesProperty = project.getObjects().mapProperty(String.class, String.class); + Provider projectLicenseURL = licenseCommitProvider.map(licenseCommit -> ELASTIC_LICENSE_URL_PREFIX + + licenseCommit + ELASTIC_LICENSE_URL_POSTFIX); + // But stick the Elastic license url in project.ext so we can get it if we need to switch to it + project.getExtensions().getExtraProperties().set("elasticLicenseUrl", projectLicenseURL); + + MapProperty convention = licensesProperty.convention( + providerFactory.provider((Callable>) () -> Map.of( + "Server Side Public License, v 1", "https://www.mongodb.com/licensing/server-side-public-license", + "Elastic License 2.0", projectLicenseURL.get()) + ) + ); + // Default to the SSPL+Elastic dual license + project.getExtensions().getExtraProperties().set("licenseCommit", licenseCommitProvider); + project.getExtensions().getExtraProperties().set("projectLicenses", convention); + } + + private boolean isSnapshotVersion(Project project) { + return project.getVersion().toString().endsWith("-SNAPSHOT"); + } + +} \ No newline at end of file diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/PublishPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/PublishPlugin.java similarity index 55% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/PublishPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/PublishPlugin.java index 3458f5cd5a3b1..5b10053e7df73 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/PublishPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/PublishPlugin.java @@ -6,22 +6,25 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal; +package org.elasticsearch.gradle.internal.conventions; +import org.elasticsearch.gradle.internal.conventions.precommit.PomValidationPrecommitPlugin; import com.github.jengelman.gradle.plugins.shadow.ShadowExtension; import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin; import groovy.util.Node; -import org.elasticsearch.gradle.internal.info.BuildParams; -import org.elasticsearch.gradle.internal.precommit.PomValidationPrecommitPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; +import org.elasticsearch.gradle.internal.conventions.info.GitInfo; import org.gradle.api.NamedDomainObjectSet; import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.Task; import org.gradle.api.XmlProvider; import org.gradle.api.plugins.BasePlugin; import org.gradle.api.plugins.BasePluginConvention; +import org.gradle.api.plugins.JavaLibraryPlugin; import org.gradle.api.plugins.JavaPlugin; +import org.gradle.api.provider.MapProperty; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.Provider; import org.gradle.api.publish.PublishingExtension; import org.gradle.api.publish.maven.MavenPublication; import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; @@ -30,9 +33,10 @@ import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.bundling.Jar; import org.gradle.language.base.plugins.LifecycleBasePlugin; -import java.util.concurrent.Callable; -import static org.elasticsearch.gradle.util.GradleUtils.maybeConfigure; +import java.io.File; +import java.util.Map; +import java.util.concurrent.Callable; public class PublishPlugin implements Plugin { @@ -41,15 +45,18 @@ public void apply(Project project) { project.getPluginManager().apply(BasePlugin.class); project.getPluginManager().apply(MavenPublishPlugin.class); project.getPluginManager().apply(PomValidationPrecommitPlugin.class); - configurePublications(project); + project.getPluginManager().apply(LicensingPlugin.class); + configureJavadocJar(project); configureSourcesJar(project); configurePomGeneration(project); + configurePublications(project); } private void configurePublications(Project project) { - PublishingExtension publishingExtension = project.getExtensions().getByType(PublishingExtension.class); - MavenPublication publication = publishingExtension.getPublications().create("elastic", MavenPublication.class); + var publishingExtension = project.getExtensions().getByType(PublishingExtension.class); + var publication = publishingExtension.getPublications().create("elastic", MavenPublication.class); + project.afterEvaluate(project1 -> { if (project1.getPlugins().hasPlugin(ShadowPlugin.class)) { configureWithShadowPlugin(project1, publication); @@ -57,6 +64,25 @@ private void configurePublications(Project project) { publication.from(project.getComponents().getByName("java")); } }); + publication.getPom().withXml(xml -> { + var node = xml.asNode(); + node.appendNode("inceptionYear", "2009"); + var licensesNode = node.appendNode("licenses"); + var projectLicenses = (MapProperty) project.getExtensions().getExtraProperties().get("projectLicenses"); + projectLicenses.get().entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(entry -> { + Node license = licensesNode.appendNode("license"); + license.appendNode("name", entry.getKey()); + license.appendNode("url", entry.getValue()); + license.appendNode("distribution", "repo"); + }); + var developer = node.appendNode("developers").appendNode("developer"); + developer.appendNode("name", "Elastic"); + developer.appendNode("url", "https://www.elastic.co"); + }); + publishingExtension.getRepositories().maven(mavenArtifactRepository -> { + mavenArtifactRepository.setName("test"); + mavenArtifactRepository.setUrl(new File(project.getRootProject().getBuildDir(), "local-test-repo")); + }); } private static String getArchivesBaseName(Project project) { @@ -67,27 +93,29 @@ private static String getArchivesBaseName(Project project) { * Configuration generation of maven poms. */ private static void configurePomGeneration(Project project) { - TaskProvider generatePomTask = project.getTasks().register("generatePom"); + Property gitInfo = project.getRootProject().getPlugins().apply(GitInfoPlugin.class).getGitInfo(); + + var generatePomTask = project.getTasks().register("generatePom"); project.getTasks().named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME).configure(assemble -> assemble.dependsOn(generatePomTask)); project.getTasks() - .withType(GenerateMavenPom.class) - .configureEach( - pomTask -> pomTask.setDestination( - (Callable) () -> String.format( - "%s/distributions/%s-%s.pom", - project.getBuildDir(), - getArchivesBaseName(project), - project.getVersion() - ) - ) - ); - PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); + .withType(GenerateMavenPom.class) + .configureEach( + pomTask -> pomTask.setDestination( + (Callable) () -> String.format( + "%s/distributions/%s-%s.pom", + project.getBuildDir(), + getArchivesBaseName(project), + project.getVersion() + ) + ) + ); + var publishing = project.getExtensions().getByType(PublishingExtension.class); final var mavenPublications = publishing.getPublications().withType(MavenPublication.class); addNameAndDescriptiontoPom(project, mavenPublications); mavenPublications.all(publication -> { // Add git origin info to generated POM files for internal builds - BuildParams.withInternalBuild(() -> publication.getPom().withXml(PublishPlugin::addScmInfo)); + publication.getPom().withXml((xmlProvider) -> addScmInfo(xmlProvider, gitInfo.get())); // have to defer this until archivesBaseName is set project.afterEvaluate(p -> publication.setArtifactId(getArchivesBaseName(project))); generatePomTask.configure(t -> t.dependsOn(project.getTasks().withType(GenerateMavenPom.class))); @@ -96,10 +124,10 @@ private static void configurePomGeneration(Project project) { private static void addNameAndDescriptiontoPom(Project project, NamedDomainObjectSet mavenPublications) { mavenPublications.all(p -> p.getPom().withXml(xml -> { - Node root = xml.asNode(); + var root = xml.asNode(); root.appendNode("name", project.getName()); - String description = project.getDescription() != null ? project.getDescription() : ""; - root.appendNode("description", project.getDescription()); + var description = project.getDescription() != null ? project.getDescription() : ""; + root.appendNode("description", description); })); } @@ -108,31 +136,31 @@ private static void configureWithShadowPlugin(Project project, MavenPublication shadow.component(publication); } - private static void addScmInfo(XmlProvider xml) { - Node root = xml.asNode(); - root.appendNode("url", Util.urlFromOrigin(BuildParams.getGitOrigin())); - Node scmNode = root.appendNode("scm"); - scmNode.appendNode("url", BuildParams.getGitOrigin()); + private static void addScmInfo(XmlProvider xml, GitInfo gitInfo) { + var root = xml.asNode(); + root.appendNode("url", gitInfo.urlFromOrigin()); + var scmNode = root.appendNode("scm"); + scmNode.appendNode("url", gitInfo.getOrigin()); } /** * Adds a javadocJar task to generate a jar containing javadocs. */ private static void configureJavadocJar(Project project) { - project.getPlugins().withId("elasticsearch.java", p -> { - TaskProvider javadocJarTask = project.getTasks().register("javadocJar", Jar.class); + project.getPlugins().withType(JavaLibraryPlugin.class, p -> { + var javadocJarTask = project.getTasks().register("javadocJar", Jar.class); javadocJarTask.configure(jar -> { jar.getArchiveClassifier().set("javadoc"); jar.setGroup("build"); jar.setDescription("Assembles a jar containing javadocs."); jar.from(project.getTasks().named(JavaPlugin.JAVADOC_TASK_NAME)); }); - maybeConfigure(project.getTasks(), BasePlugin.ASSEMBLE_TASK_NAME, t -> t.dependsOn(javadocJarTask)); + project.getTasks().named(BasePlugin.ASSEMBLE_TASK_NAME).configure(t -> t.dependsOn(javadocJarTask)); }); } static void configureSourcesJar(Project project) { - project.getPlugins().withId("elasticsearch.java", p -> { + project.getPlugins().withType(JavaLibraryPlugin.class, p -> { TaskProvider sourcesJarTask = project.getTasks().register("sourcesJar", Jar.class); sourcesJarTask.configure(jar -> { jar.getArchiveClassifier().set("sources"); @@ -141,7 +169,7 @@ static void configureSourcesJar(Project project) { SourceSet mainSourceSet = Util.getJavaMainSourceSet(project).get(); jar.from(mainSourceSet.getAllSource()); }); - maybeConfigure(project.getTasks(), BasePlugin.ASSEMBLE_TASK_NAME, t -> t.dependsOn(sourcesJarTask)); + project.getTasks().named(BasePlugin.ASSEMBLE_TASK_NAME).configure(t -> t.dependsOn(sourcesJarTask)); }); } } diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/VersionPropertiesLoader.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/VersionPropertiesLoader.java new file mode 100644 index 0000000000000..c7307ce98f65d --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/VersionPropertiesLoader.java @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions; + + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +// Define this here because we need it early. +public class VersionPropertiesLoader { + static Properties loadBuildSrcVersion(File input) throws IOException { + Properties props = new Properties(); + InputStream is = new FileInputStream(input); + try { + props.load(is); + } finally { + is.close(); + } + loadBuildSrcVersion(props, System.getProperties()); + return props; + } + + protected static void loadBuildSrcVersion(Properties loadedProps, Properties systemProperties) { + String elasticsearch = loadedProps.getProperty("elasticsearch"); + if (elasticsearch == null) { + throw new IllegalStateException("Elasticsearch version is missing from properties."); + } + if (elasticsearch.matches("[0-9]+\\.[0-9]+\\.[0-9]+") == false) { + throw new IllegalStateException( + "Expected elasticsearch version to be numbers only of the form X.Y.Z but it was: " + + elasticsearch + ); + } + String qualifier = systemProperties.getProperty("build.version_qualifier", ""); + if (qualifier.isEmpty() == false) { + if (qualifier.matches("(alpha|beta|rc)\\d+") == false) { + throw new IllegalStateException("Invalid qualifier: " + qualifier); + } + elasticsearch += "-" + qualifier; + } + final String buildSnapshotSystemProperty = systemProperties.getProperty("build.snapshot", "true"); + switch (buildSnapshotSystemProperty) { + case "true": + elasticsearch += "-SNAPSHOT"; + break; + case "false": + // do nothing + break; + default: + throw new IllegalArgumentException( + "build.snapshot was set to [" + buildSnapshotSystemProperty + "] but can only be unset or [true|false]"); + } + loadedProps.put("elasticsearch", elasticsearch); + } +} + diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java new file mode 100644 index 0000000000000..7ada49bdbd85e --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/GitInfo.java @@ -0,0 +1,186 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions.info; + +import org.gradle.api.GradleException; +import org.gradle.api.logging.Logging; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class GitInfo { + private static final Pattern GIT_PATTERN = Pattern.compile("git@([^:]+):([^\\.]+)\\.git"); + + private final String revision; + private final String origin; + + private GitInfo(String revision, String origin) { + this.revision = revision; + this.origin = origin; + } + + public String getRevision() { + return revision; + } + + public String getOrigin() { + return origin; + } + + public static GitInfo gitInfo(File rootDir) { + try { + /* + * We want to avoid forking another process to run git rev-parse HEAD. Instead, we will read the refs manually. The + * documentation for this follows from https://git-scm.com/docs/gitrepository-layout and https://git-scm.com/docs/git-worktree. + * + * There are two cases to consider: + * - a plain repository with .git directory at the root of the working tree + * - a worktree with a plain text .git file at the root of the working tree + * + * In each case, our goal is to parse the HEAD file to get either a ref or a bare revision (in the case of being in detached + * HEAD state). + * + * In the case of a plain repository, we can read the HEAD file directly, resolved directly from the .git directory. + * + * In the case of a worktree, we read the gitdir from the plain text .git file. This resolves to a directory from which we read + * the HEAD file and resolve commondir to the plain git repository. + */ + final Path dotGit = rootDir.toPath().resolve(".git"); + final String revision; + if (Files.exists(dotGit) == false) { + return new GitInfo("unknown", "unknown"); + } + final Path head; + final Path gitDir; + if (Files.isDirectory(dotGit)) { + // this is a git repository, we can read HEAD directly + head = dotGit.resolve("HEAD"); + gitDir = dotGit; + } else { + // this is a git worktree, follow the pointer to the repository + final Path workTree = Paths.get(readFirstLine(dotGit).substring("gitdir:".length()).trim()); + if (Files.exists(workTree) == false) { + return new GitInfo("unknown", "unknown"); + } + head = workTree.resolve("HEAD"); + final Path commonDir = Paths.get(readFirstLine(workTree.resolve("commondir"))); + if (commonDir.isAbsolute()) { + gitDir = commonDir; + } else { + // this is the common case + gitDir = workTree.resolve(commonDir); + } + } + final String ref = readFirstLine(head); + if (ref.startsWith("ref:")) { + String refName = ref.substring("ref:".length()).trim(); + Path refFile = gitDir.resolve(refName); + if (Files.exists(refFile)) { + revision = readFirstLine(refFile); + } else if (Files.exists(gitDir.resolve("packed-refs"))) { + // Check packed references for commit ID + Pattern p = Pattern.compile("^([a-f0-9]{40}) " + refName + "$"); + try (Stream lines = Files.lines(gitDir.resolve("packed-refs"))) { + revision = lines.map(p::matcher) + .filter(Matcher::matches) + .map(m -> m.group(1)) + .findFirst() + .orElseThrow(() -> new IOException("Packed reference not found for refName " + refName)); + } + } else { + File refsDir = gitDir.resolve("refs").toFile(); + if (refsDir.exists()) { + String foundRefs = Arrays.stream(refsDir.listFiles()).map(f -> f.getName()).collect(Collectors.joining("\n")); + Logging.getLogger(GitInfo.class).error("Found git refs\n" + foundRefs); + } else { + Logging.getLogger(GitInfo.class).error("No git refs dir found"); + } + throw new GradleException("Can't find revision for refName " + refName); + } + } else { + // we are in detached HEAD state + revision = ref; + } + return new GitInfo(revision, findOriginUrl(gitDir.resolve("config"))); + } catch (final IOException e) { + // for now, do not be lenient until we have better understanding of real-world scenarios where this happens + throw new GradleException("unable to read the git revision", e); + } + } + + + private static String findOriginUrl(final Path configFile) throws IOException { + Map props = new HashMap<>(); + + try (Stream stream = Files.lines(configFile, StandardCharsets.UTF_8)) { + Iterator lines = stream.iterator(); + boolean foundOrigin = false; + while (lines.hasNext()) { + String line = lines.next().trim(); + if (line.startsWith(";") || line.startsWith("#")) { + // ignore comments + continue; + } + if (foundOrigin) { + if (line.startsWith("[")) { + // we're on to the next config item so stop looking + break; + } + String[] pair = line.trim().split("=", 2); + props.put(pair[0].trim(), pair[1].trim()); + } else { + if (line.equals("[remote \"origin\"]")) { + foundOrigin = true; + } + } + } + } + + String originUrl = props.get("url"); + return originUrl == null ? "unknown" : originUrl; + } + + private static String readFirstLine(final Path path) throws IOException { + String firstLine; + try (Stream lines = Files.lines(path, StandardCharsets.UTF_8)) { + firstLine = lines.findFirst().orElseThrow(() -> new IOException("file [" + path + "] is empty")); + } + return firstLine; + } + + /** Find the reponame. */ + public String urlFromOrigin() { + String oritin = getOrigin(); + if (origin == null) { + return null; // best effort, the url doesnt really matter, it is just required by maven central + } + if (origin.startsWith("https")) { + return origin; + } + Matcher matcher = GIT_PATTERN.matcher(origin); + if (matcher.matches()) { + return String.format("https://%s/%s", matcher.group(1), matcher.group(2)); + } else { + return origin; // best effort, the url doesnt really matter, it is just required by maven central + } + } + +} diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java new file mode 100644 index 0000000000000..c4c0cb8f46d4c --- /dev/null +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.conventions.info; + +import org.gradle.api.Project; + +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class ParallelDetector { + + private static Integer _defaultParallel = null; + + public static int findDefaultParallel(Project project) { + // Since it costs IO to compute this, and is done at configuration time we want to cache this if possible + // It's safe to store this in a static variable since it's just a primitive so leaking memory isn't an issue + if (_defaultParallel == null) { + File cpuInfoFile = new File("/proc/cpuinfo"); + if (cpuInfoFile.exists()) { + // Count physical cores on any Linux distro ( don't count hyper-threading ) + Map socketToCore = new HashMap<>(); + String currentID = ""; + + try (BufferedReader reader = new BufferedReader(new FileReader(cpuInfoFile))) { + for (String line = reader.readLine(); line != null; line = reader.readLine()) { + if (line.contains(":")) { + List parts = Arrays.stream(line.split(":", 2)).map(String::trim).collect(Collectors.toList()); + String name = parts.get(0); + String value = parts.get(1); + // the ID of the CPU socket + if (name.equals("physical id")) { + currentID = value; + } + // Number of cores not including hyper-threading + if (name.equals("cpu cores")) { + assert currentID.isEmpty() == false; + socketToCore.put("currentID", Integer.valueOf(value)); + currentID = ""; + } + } + } + } catch (IOException e) { + throw new UncheckedIOException(e); + } + _defaultParallel = socketToCore.values().stream().mapToInt(i -> i).sum(); + } else if (isMac()) { + // Ask macOS to count physical CPUs for us + ByteArrayOutputStream stdout = new ByteArrayOutputStream(); + project.exec(spec -> { + spec.setExecutable("sysctl"); + spec.args("-n", "hw.physicalcpu"); + spec.setStandardOutput(stdout); + }); + + _defaultParallel = Integer.parseInt(stdout.toString().trim()); + } + + _defaultParallel = Runtime.getRuntime().availableProcessors() / 2; + } + + return _defaultParallel; + } + + private static boolean isMac() { + return System.getProperty("os.name", "").startsWith("Mac"); + } + +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersPrecommitPlugin.java similarity index 80% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersPrecommitPlugin.java index 9d65aadb68940..e93c6bab74f04 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersPrecommitPlugin.java @@ -6,14 +6,12 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.precommit; +package org.elasticsearch.gradle.internal.conventions.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; import org.gradle.api.plugins.JavaBasePlugin; +import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.provider.ProviderFactory; import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskProvider; @@ -21,7 +19,7 @@ import javax.inject.Inject; import java.util.stream.Collectors; -public class LicenseHeadersPrecommitPlugin extends PrecommitPlugin implements InternalPlugin { +public class LicenseHeadersPrecommitPlugin extends PrecommitPlugin { @Inject public LicenseHeadersPrecommitPlugin(ProviderFactory providerFactory) { this.providerFactory = providerFactory; @@ -31,7 +29,7 @@ public LicenseHeadersPrecommitPlugin(ProviderFactory providerFactory) { public TaskProvider createTask(Project project) { return project.getTasks().register("licenseHeaders", LicenseHeadersTask.class, licenseHeadersTask -> { project.getPlugins().withType(JavaBasePlugin.class, javaBasePlugin -> { - final SourceSetContainer sourceSets = GradleUtils.getJavaSourceSets(project); + final SourceSetContainer sourceSets = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets(); licenseHeadersTask.getSourceFolders() .addAll(providerFactory.provider(() -> sourceSets.stream().map(s -> s.getAllJava()).collect(Collectors.toList()))); }); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersTask.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersTask.java index 2faa82a118d3c..e880d07e79148 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseHeadersTask.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/LicenseHeadersTask.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; import org.apache.rat.Defaults; import org.apache.rat.ReportConfiguration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationPrecommitPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationPrecommitPlugin.java similarity index 87% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationPrecommitPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationPrecommitPlugin.java index 752b73f9c5fa9..0f7de8573e3cc 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationPrecommitPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationPrecommitPlugin.java @@ -6,10 +6,9 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.GUtils; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.publish.PublishingExtension; @@ -26,7 +25,7 @@ public TaskProvider createTask(Project project) { TaskProvider validatePom = project.getTasks().register("validatePom"); PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); publishing.getPublications().all(publication -> { - String publicationName = Util.capitalize(publication.getName()); + String publicationName = GUtils.capitalize(publication.getName()); TaskProvider validateTask = project.getTasks() .register("validate" + publicationName + "Pom", PomValidationTask.class); validatePom.configure(t -> t.dependsOn(validateTask)); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationTask.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationTask.java similarity index 95% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationTask.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationTask.java index f421c6fc10abf..27c7ea76defac 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/PomValidationTask.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PomValidationTask.java @@ -6,11 +6,11 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; import org.apache.maven.model.Model; import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.elasticsearch.gradle.precommit.PrecommitTask; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitTask; import org.gradle.api.GradleException; import org.gradle.api.file.RegularFileProperty; import org.gradle.api.tasks.InputFile; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitPlugin.java similarity index 79% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitPlugin.java index b12a7cae15d63..6bf3cc5e93b95 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitPlugin.java @@ -6,12 +6,12 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; -import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; +import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.TaskProvider; /** @@ -27,10 +27,11 @@ public final void apply(Project project) { TaskProvider task = createTask(project); TaskProvider precommit = project.getTasks().named(PRECOMMIT_TASK_NAME); precommit.configure(t -> t.dependsOn(task)); - project.getPluginManager().withPlugin("java", p -> { // We want to get any compilation error before running the pre-commit checks. - GradleUtils.getJavaSourceSets(project).all(sourceSet -> task.configure(t -> t.shouldRunAfter(sourceSet.getClassesTaskName()))); + project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all(sourceSet -> + task.configure(t -> t.shouldRunAfter(sourceSet.getClassesTaskName())) + ); }); } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTask.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTask.java similarity index 94% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTask.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTask.java index 7046df15b9e9f..5cdc291895ffe 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTask.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTask.java @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; import org.gradle.api.DefaultTask; import org.gradle.api.file.ProjectLayout; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTaskPlugin.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTaskPlugin.java similarity index 71% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTaskPlugin.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTaskPlugin.java index f5d554dca2711..0493b30149bf3 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTaskPlugin.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/precommit/PrecommitTaskPlugin.java @@ -6,13 +6,13 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.internal.conventions.precommit; -import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.plugins.JavaBasePlugin; +import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.testing.Test; import org.gradle.language.base.plugins.LifecycleBasePlugin; @@ -27,14 +27,15 @@ public void apply(Project project) { }); project.getPluginManager() - .withPlugin( - "lifecycle-base", - p -> project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(precommit)) - ); + .withPlugin( + "lifecycle-base", + p -> project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(precommit)) + ); project.getPluginManager().withPlugin("java", p -> { // run compilation as part of precommit - GradleUtils.getJavaSourceSets(project).all(sourceSet -> precommit.configure(t -> t.dependsOn(sourceSet.getClassesTaskName()))); - + project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all(sourceSet -> + precommit.configure(t -> t.shouldRunAfter(sourceSet.getClassesTaskName())) + ); // make sure tests run after all precommit tasks project.getTasks().withType(Test.class).configureEach(t -> t.mustRunAfter(precommit)); }); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/Util.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java similarity index 65% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/Util.java rename to build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java index f00c32bda3ec9..3c90df54c0db5 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/Util.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java @@ -6,30 +6,22 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.util; +package org.elasticsearch.gradle.internal.conventions.util; -import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; -import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.file.FileTree; import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.SourceSet; +import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.util.PatternFilterable; import javax.annotation.Nullable; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.UncheckedIOException; import java.net.URI; import java.net.URISyntaxException; -import java.util.Locale; import java.util.Optional; import java.util.function.Supplier; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class Util { @@ -47,36 +39,6 @@ public static boolean getBooleanProperty(String property, boolean defaultValue) } } - public static String getResourceContents(String resourcePath) { - try ( - BufferedReader reader = new BufferedReader(new InputStreamReader(GlobalBuildInfoPlugin.class.getResourceAsStream(resourcePath))) - ) { - StringBuilder b = new StringBuilder(); - for (String line = reader.readLine(); line != null; line = reader.readLine()) { - if (b.length() != 0) { - b.append('\n'); - } - b.append(line); - } - - return b.toString(); - } catch (IOException e) { - throw new UncheckedIOException("Error trying to read classpath resource: " + resourcePath, e); - } - } - - public static String capitalize(String s) { - return s.substring(0, 1).toUpperCase(Locale.ROOT) + s.substring(1); - } - - public static URI getBuildSrcCodeSource() { - try { - return Util.class.getProtectionDomain().getCodeSource().getLocation().toURI(); - } catch (URISyntaxException e) { - throw new GradleException("Error determining build tools JAR location", e); - } - } - /** * @param project The project to look for resources. * @param filter Optional filter function to filter the returned resources @@ -125,7 +87,7 @@ public static FileTree getJavaTestAndMainSourceResources(Project project, Action public static Optional getJavaTestSourceSet(Project project) { return project.getConvention().findPlugin(JavaPluginConvention.class) == null ? Optional.empty() - : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(SourceSet.TEST_SOURCE_SET_NAME)); + : Optional.ofNullable(getJavaSourceSets(project).findByName(SourceSet.TEST_SOURCE_SET_NAME)); } /** @@ -135,26 +97,9 @@ public static Optional getJavaTestSourceSet(Project project) { public static Optional getJavaMainSourceSet(Project project) { return project.getConvention().findPlugin(JavaPluginConvention.class) == null ? Optional.empty() - : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(SourceSet.MAIN_SOURCE_SET_NAME)); + : Optional.ofNullable(getJavaSourceSets(project).findByName(SourceSet.MAIN_SOURCE_SET_NAME)); } - static final Pattern GIT_PATTERN = Pattern.compile("git@([^:]+):([^\\.]+)\\.git"); - - /** Find the reponame. */ - public static String urlFromOrigin(String origin) { - if (origin == null) { - return null; // best effort, the url doesnt really matter, it is just required by maven central - } - if (origin.startsWith("https")) { - return origin; - } - Matcher matcher = GIT_PATTERN.matcher(origin); - if (matcher.matches()) { - return String.format("https://%s/%s", matcher.group(1), matcher.group(2)); - } else { - return origin; // best effort, the url doesnt really matter, it is just required by maven central - } - } public static Object toStringable(Supplier getter) { return new Object() { @@ -164,4 +109,9 @@ public String toString() { } }; } + + public static SourceSetContainer getJavaSourceSets(Project project) { + return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets(); + } + } diff --git a/buildSrc/.gitignore b/build-tools-internal/.gitignore similarity index 100% rename from buildSrc/.gitignore rename to build-tools-internal/.gitignore diff --git a/buildSrc/build.gradle b/build-tools-internal/build.gradle similarity index 53% rename from buildSrc/build.gradle rename to build-tools-internal/build.gradle index 7dec46e2da134..5c9f22069d841 100644 --- a/buildSrc/build.gradle +++ b/build-tools-internal/build.gradle @@ -6,26 +6,19 @@ * Side Public License, v 1. */ -import org.gradle.internal.jvm.Jvm + +import org.elasticsearch.gradle.internal.conventions.VersionPropertiesLoader plugins { id 'java-gradle-plugin' + id 'groovy-gradle-plugin' id 'groovy' - id 'java-test-fixtures' + id 'elasticsearch.internal-licenseheaders' + id 'elasticsearch.basic-build-tool-conventions' } group = 'org.elasticsearch.gradle' -if (project == rootProject) { - // change the build dir used during build init, so that doing a clean - // won't wipe out the buildscript jar - buildDir = 'build-bootstrap' -} - -/***************************************************************************** - * Propagating version.properties to the rest of the build * - *****************************************************************************/ - // we update the version property to reflect if we are building a snapshot or a release build // we write this back out below to load it in the Build.java which will be shown in rest main action // to indicate this being a snapshot build or a release build. @@ -41,10 +34,6 @@ gradlePlugin { id = 'elasticsearch.build' implementationClass = 'org.elasticsearch.gradle.internal.BuildPlugin' } - distributionDownload { - id = 'elasticsearch.distribution-download' - implementationClass = 'org.elasticsearch.gradle.DistributionDownloadPlugin' - } distroTest { id = 'elasticsearch.distro-test' implementationClass = 'org.elasticsearch.gradle.internal.test.DistroTestPlugin' @@ -57,10 +46,6 @@ gradlePlugin { id = 'elasticsearch.docs-test' implementationClass = 'org.elasticsearch.gradle.internal.doc.DocsTestPlugin' } - esPlugin { - id = 'elasticsearch.esplugin' - implementationClass = 'org.elasticsearch.gradle.plugin.PluginBuildPlugin' - } globalBuildInfo { id = 'elasticsearch.global-build-info' implementationClass = 'org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin' @@ -89,10 +74,6 @@ gradlePlugin { id = 'elasticsearch.internal-distribution-download' implementationClass = 'org.elasticsearch.gradle.internal.InternalDistributionDownloadPlugin' } - internalLicenseheaders { - id = 'elasticsearch.internal-licenseheaders' - implementationClass = 'org.elasticsearch.gradle.internal.precommit.LicenseHeadersPrecommitPlugin' - } internalPlugin { id = 'elasticsearch.internal-es-plugin' implementationClass = 'org.elasticsearch.gradle.internal.InternalPluginBuildPlugin' @@ -125,14 +106,6 @@ gradlePlugin { id = 'elasticsearch.jdk-download' implementationClass = 'org.elasticsearch.gradle.internal.JdkDownloadPlugin' } - publish { - id = 'elasticsearch.publish' - implementationClass = 'org.elasticsearch.gradle.internal.PublishPlugin' - } - reaper { - id = 'elasticsearch.reaper' - implementationClass = 'org.elasticsearch.gradle.ReaperPlugin' - } repositories { id = 'elasticsearch.repositories' implementationClass = 'org.elasticsearch.gradle.internal.RepositoriesSetupPlugin' @@ -169,10 +142,6 @@ gradlePlugin { id = 'elasticsearch.test-with-ssl' implementationClass = 'org.elasticsearch.gradle.internal.test.TestWithSslPlugin' } - testclusters { - id = 'elasticsearch.testclusters' - implementationClass = 'org.elasticsearch.gradle.testclusters.TestClustersPlugin' - } validateRestSpec { id = 'elasticsearch.validate-rest-spec' implementationClass = 'org.elasticsearch.gradle.internal.precommit.ValidateRestSpecPlugin' @@ -187,15 +156,6 @@ gradlePlugin { } } } -def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) { - outputFile = "${buildDir}/version.properties" - comment = 'Generated version properties' - properties(props) -} - -tasks.named("processResources").configure { - from(generateVersionProperties) -} /***************************************************************************** * Java version * @@ -205,11 +165,9 @@ if (JavaVersion.current() < JavaVersion.VERSION_11) { throw new GradleException('At least Java 11 is required to build elasticsearch gradle tools') } -allprojects { - apply plugin: 'java' - targetCompatibility = '11' - sourceCompatibility = '11' -} +def minRuntimeJava = JavaVersion.toVersion(file('src/main/resources/minimumRuntimeVersion').text) +targetCompatibility = minRuntimeJava +sourceCompatibility = minRuntimeJava sourceSets { integTest { @@ -222,6 +180,10 @@ tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' } +tasks.named('licenseHeaders').configure { + // ignore gradle generated binary script plugins + excludes << "Elasticsearch*Plugin.java" +} /***************************************************************************** * Dependencies used by the entire build * *****************************************************************************/ @@ -238,6 +200,9 @@ dependencies { api localGroovy() api gradleApi() + api "org.elasticsearch:build-conventions:$version" + api "org.elasticsearch:build-tools:$version" + api 'commons-codec:commons-codec:1.12' api 'org.apache.commons:commons-compress:1.19' api 'org.apache.ant:ant:1.10.8' @@ -260,22 +225,26 @@ dependencies { api "org.apache.httpcomponents:httpcore:${props.getProperty('httpcore')}" compileOnly "com.puppycrawl.tools:checkstyle:${props.getProperty('checkstyle')}" testImplementation "com.puppycrawl.tools:checkstyle:${props.getProperty('checkstyle')}" - testFixturesApi "junit:junit:${props.getProperty('junit')}" - testFixturesApi "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${props.getProperty('randomizedrunner')}" - testFixturesApi gradleApi() - testFixturesApi gradleTestKit() + testImplementation "junit:junit:${props.getProperty('junit')}" +// testFixturesApi "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${props.getProperty('randomizedrunner')}" +// testFixturesApi gradleApi() +// testFixturesApi gradleTestKit() testImplementation 'com.github.tomakehurst:wiremock-jre8-standalone:2.23.2' testImplementation 'org.mockito:mockito-core:1.9.5' testImplementation "org.hamcrest:hamcrest:${props.getProperty('hamcrest')}" + testImplementation testFixtures("org.elasticsearch:build-tools:$version") + integTestImplementation(platform("org.junit:junit-bom:${props.getProperty('junit5')}")) integTestImplementation("org.junit.jupiter:junit-jupiter") { because 'allows to write and run Jupiter tests' } + integTestImplementation("net.bytebuddy:byte-buddy:1.11.0") { + because 'Generating dynamic mocks of internal libraries like JdkJarHell' + } testRuntimeOnly("org.junit.vintage:junit-vintage-engine") { because 'allows JUnit 3 and JUnit 4 tests to run' } - integTestRuntimeOnly("org.junit.platform:junit-platform-launcher") { because 'allows tests to run from IDEs that bundle older version of launcher' } @@ -293,186 +262,12 @@ dependencies { integTestImplementation "org.xmlunit:xmlunit-core:2.8.2" } -/***************************************************************************** - * Bootstrap repositories * - *****************************************************************************/ -// this will only happen when buildSrc is built on its own during build init -if (project == rootProject) { - apply plugin: 'groovy-gradle-plugin' - - repositories { - if (System.getProperty("repos.mavenLocal") != null) { - mavenLocal() - } - } - dependencies { - // add this so the runtime classpath so Gradle will properly track it as a build runtime classpath input - runtimeOnly project('reaper') - } - // only run tests as build-tools - tasks.named("test").configure { - enabled = false - } +tasks.register("integTest", Test) { + inputs.dir(file("src/testKit")).withPropertyName("testkit dir").withPathSensitivity(PathSensitivity.RELATIVE) + systemProperty 'test.version_under_test', version + testClassesDirs = sourceSets.integTest.output.classesDirs + classpath = sourceSets.integTest.runtimeClasspath + useJUnitPlatform() } -/***************************************************************************** - * Normal project checks * - *****************************************************************************/ - -// this happens when included as a normal project in the build, which we do -// to enforce precommit checks like forbidden apis, as well as setup publishing -if (project != rootProject) { - apply plugin: 'elasticsearch.build' - apply plugin: 'elasticsearch.publish' - - // groovydoc succeeds, but has some weird internal exception... - tasks.named("groovydoc").configure { - enabled = false - } - - // build-tools is not ready for primetime with these... - tasks.named("dependencyLicenses").configure { enabled = false } - tasks.named("dependenciesInfo").configure {enabled = false } - tasks.named("dependenciesGraph").configure {enabled = false } - disableTasks('forbiddenApisMain', 'forbiddenApisTest', 'forbiddenApisIntegTest', 'forbiddenApisTestFixtures') - tasks.named("jarHell").configure { - enabled = false - } - tasks.named("thirdPartyAudit").configure { - enabled = false - } - configurations.register("distribution") - configurations.register("reaper") - - dependencies { - reaper project('reaper') - distribution project(':distribution:archives:windows-zip') - distribution project(':distribution:archives:darwin-tar') - distribution project(':distribution:archives:darwin-aarch64-tar') - distribution project(':distribution:archives:linux-aarch64-tar') - distribution project(':distribution:archives:linux-tar') - integTestRuntimeOnly(project(":libs:elasticsearch-core")) - } - - eclipse { - classpath { - plusConfigurations += [configurations.integTestRuntimeClasspath] - } - } - - // for external projects we want to remove the marker file indicating we are running the Elasticsearch project - tasks.named("processResources").configure { - exclude 'buildSrc.marker' - into('META-INF') { - from configurations.reaper - } - } - - tasks.withType(Test).configureEach { - // Track reaper jar as a test input using runtime classpath normalization strategy - inputs.files(configurations.reaper).withNormalizer(ClasspathNormalizer) - useJUnitPlatform() - } - - tasks.named("test").configure { - include("**/*TestSpec.class") - } - - normalization { - runtimeClasspath { - // We already include the reaper jar as part of our runtime classpath. Ignore the copy in META-INF. - ignore('META-INF/reaper.jar') - } - } - - tasks.named("forbiddenPatterns").configure { - exclude '**/*.wav' - exclude '**/*.p12' - exclude '**/*.jks' - exclude '**/*.crt' - // the file that actually defines nocommit - exclude '**/ForbiddenPatternsTask.java' - exclude '**/*.bcfks' - } - - tasks.named("testingConventions") { - naming.clear() - naming { - Tests { - baseClass 'org.elasticsearch.gradle.internal.test.GradleUnitTestCase' - } - TestSpec { - baseClass 'spock.lang.Specification' - } - } - } - - tasks.register("integTest", Test) { - inputs.dir(file("src/testKit")).withPropertyName("testkit dir").withPathSensitivity(PathSensitivity.RELATIVE) - systemProperty 'test.version_under_test', version - testClassesDirs = sourceSets.integTest.output.classesDirs - classpath = sourceSets.integTest.runtimeClasspath - useJUnitPlatform() - } - tasks.named("check").configure { dependsOn("integTest") } - - // for now we hardcode the tests for our build to use the gradle jvm. - tasks.withType(Test).configureEach { - onlyIf { org.elasticsearch.gradle.internal.info.BuildParams.inFipsJvm == false } - it.executable = Jvm.current().getJavaExecutable() - maxParallelForks = providers.systemProperty('tests.jvms').forUseAtConfigurationTime().getOrElse(org.elasticsearch.gradle.internal.info.BuildParams.defaultParallel.toString()) as Integer - } - - publishing.publications.named("elastic").configure { - suppressPomMetadataWarningsFor("testFixturesApiElements") - suppressPomMetadataWarningsFor("testFixturesRuntimeElements") - } -} - -// Define this here because we need it early. -class VersionPropertiesLoader { - static Properties loadBuildSrcVersion(File input) throws IOException { - Properties props = new Properties(); - InputStream is = new FileInputStream(input) - try { - props.load(is) - } finally { - is.close() - } - loadBuildSrcVersion(props, System.getProperties()) - return props - } - - protected static void loadBuildSrcVersion(Properties loadedProps, Properties systemProperties) { - String elasticsearch = loadedProps.getProperty("elasticsearch") - if (elasticsearch == null) { - throw new IllegalStateException("Elasticsearch version is missing from properties.") - } - if (elasticsearch.matches("[0-9]+\\.[0-9]+\\.[0-9]+") == false) { - throw new IllegalStateException( - "Expected elasticsearch version to be numbers only of the form X.Y.Z but it was: " + - elasticsearch - ) - } - String qualifier = systemProperties.getProperty("build.version_qualifier", "") - if (qualifier.isEmpty() == false) { - if (qualifier.matches("(alpha|beta|rc)\\d+") == false) { - throw new IllegalStateException("Invalid qualifier: " + qualifier) - } - elasticsearch += "-" + qualifier - } - final String buildSnapshotSystemProperty = systemProperties.getProperty("build.snapshot", "true"); - switch (buildSnapshotSystemProperty) { - case "true": - elasticsearch += "-SNAPSHOT" - break; - case "false": - // do nothing - break; - default: - throw new IllegalArgumentException( - "build.snapshot was set to [" + buildSnapshotSystemProperty + "] but can only be unset or [true|false]"); - } - loadedProps.put("elasticsearch", elasticsearch) - } -} +tasks.named("check").configure { dependsOn("integTest") } \ No newline at end of file diff --git a/buildSrc/elastic.importorder b/build-tools-internal/elastic.importorder similarity index 100% rename from buildSrc/elastic.importorder rename to build-tools-internal/elastic.importorder diff --git a/buildSrc/formatterConfig.xml b/build-tools-internal/formatterConfig.xml similarity index 100% rename from buildSrc/formatterConfig.xml rename to build-tools-internal/formatterConfig.xml diff --git a/build-tools-internal/settings.gradle b/build-tools-internal/settings.gradle new file mode 100644 index 0000000000000..6981f837d4a2c --- /dev/null +++ b/build-tools-internal/settings.gradle @@ -0,0 +1,2 @@ +includeBuild '../build-conventions' +includeBuild '../build-tools' diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy similarity index 96% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy index e43d79e819050..02bab0a0dae8b 100644 --- a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGitAwareGradleFuncTest.groovy @@ -9,6 +9,7 @@ package org.elasticsearch.gradle.fixtures import org.apache.commons.io.FileUtils +import org.elasticsearch.gradle.internal.test.InternalAwareGradleRunner import org.gradle.testkit.runner.GradleRunner import org.junit.Rule import org.junit.rules.TemporaryFolder diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractRestResourcesFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchJavaPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/ElasticsearchTestBasePluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/JdkDownloadPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy similarity index 58% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy index 6155e858780ae..9b9a9e9b70642 100644 --- a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/PublishPluginFuncTest.groovy @@ -10,8 +10,10 @@ package org.elasticsearch.gradle.internal import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest import org.gradle.testkit.runner.TaskOutcome +import org.junit.Ignore import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input +import spock.lang.IgnoreRest class PublishPluginFuncTest extends AbstractGradleFuncTest { @@ -38,16 +40,42 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { file("build/distributions/hello-world-1.0-sources.jar").exists() file("build/distributions/hello-world-1.0.pom").exists() assertXmlEquals(file("build/distributions/hello-world-1.0.pom").text, """ - - 4.0.0 - org.acme - hello-world - 1.0 - hello-world - custom project description - """ + + + + + + + 4.0.0 + org.acme + hello-world + 1.0 + hello-world + custom project description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v1.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + +""" ) } @@ -99,6 +127,29 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { 1.0 hello-world some description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v1.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + org.slf4j @@ -160,6 +211,29 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { 1.0 hello-world some description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v1.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + org.acme @@ -216,15 +290,41 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { file("build/distributions/hello-world-plugin-1.0-sources.jar").exists() file("build/distributions/hello-world-plugin-1.0.pom").exists() assertXmlEquals(file("build/distributions/hello-world-plugin-1.0.pom").text, """ - + + + + + + 4.0.0 org.acme hello-world-plugin 1.0 hello-world custom project description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v1.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + """ ) @@ -250,7 +350,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { tasks.named('bundlePlugin').configure { enabled = false } licenseFile = file('license.txt') noticeFile = file('notice.txt') - version = "1.0" + version = "2.0" group = 'org.acme' """ @@ -259,22 +359,48 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { then: result.task(":generatePom").outcome == TaskOutcome.SUCCESS - file("build/distributions/hello-world-plugin-1.0.pom").exists() - assertXmlEquals(file("build/distributions/hello-world-plugin-1.0.pom").text, """ - + file("build/distributions/hello-world-plugin-2.0.pom").exists() + assertXmlEquals(file("build/distributions/hello-world-plugin-2.0.pom").text, """ + + + + + + 4.0.0 org.acme hello-world-plugin - 1.0 + 2.0 hello-world custom project description + unknown + + unknown + + 2009 + + + Elastic License 2.0 + https://raw.githubusercontent.com/elastic/elasticsearch/v2.0/licenses/ELASTIC-LICENSE-2.0.txt + repo + + + Server Side Public License, v 1 + https://www.mongodb.com/licensing/server-side-public-license + repo + + + + + Elastic + https://www.elastic.co + + """ ) } - def "generated pom can be tweaked and validated"() { + def "generated pom can be validated"() { given: // scm info only added for internal builds internalBuild() @@ -288,68 +414,47 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest { group = 'org.acme' description = "just a test project" - // this is currently required to have validation passed - // In our elasticsearch build this is currently setup in the - // root build.gradle file. - plugins.withType(MavenPublishPlugin) { - publishing { - publications { - // add license information to generated poms - all { - pom.withXml { XmlProvider xml -> - Node node = xml.asNode() - node.appendNode('inceptionYear', '2009') - - Node license = node.appendNode('licenses').appendNode('license') - license.appendNode('name', "The Apache Software License, Version 2.0") - license.appendNode('url', "http://www.apache.org/licenses/LICENSE-2.0.txt") - license.appendNode('distribution', 'repo') - - Node developer = node.appendNode('developers').appendNode('developer') - developer.appendNode('name', 'Elastic') - developer.appendNode('url', 'https://www.elastic.co') - } - } - } - } - } + ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) """ when: - def result = gradleRunner('generatePom', 'validatElasticPom').build() + def result = gradleRunner('generatePom', 'validateElasticPom').build() then: result.task(":generatePom").outcome == TaskOutcome.SUCCESS file("build/distributions/hello-world-1.0.pom").exists() assertXmlEquals(file("build/distributions/hello-world-1.0.pom").text, """ - - 4.0.0 - org.acme - hello-world - 1.0 - hello-world - just a test project - https://some-repo.com/repo.git - - https://some-repo.com/repo.git - - 2009 - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - Elastic - https://www.elastic.co - - - """ + + + + + + + 4.0.0 + org.acme + hello-world + 1.0 + hello-world + just a test project + unknown + + unknown + + 2009 + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + repo + + + + + Elastic + https://www.elastic.co + + + """ ) } diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/precommit/LicenseHeadersPrecommitPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rerun/InternalTestRerunPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/RestResourcesPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestCompatTestPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java similarity index 100% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java similarity index 99% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java index 44ce9e3f44f53..f57dfa4ca97bc 100644 --- a/buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java +++ b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/BuildPluginIT.java @@ -46,11 +46,8 @@ public void testCheckTask() { public void testLicenseAndNotice() throws IOException { BuildResult result = getGradleRunner().withArguments("clean", "assemble").build(); - assertTaskSuccessful(result, ":assemble"); - assertBuildFileExists(result, projectName(), "distributions/elasticsearch.build.jar"); - try (ZipFile zipFile = new ZipFile(new File(getBuildDir(projectName()), "distributions/elasticsearch.build.jar"))) { ZipEntry licenseEntry = zipFile.getEntry("META-INF/LICENSE.txt"); ZipEntry noticeEntry = zipFile.getEntry("META-INF/NOTICE.txt"); diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java similarity index 100% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTaskIT.java diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java similarity index 100% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTarIT.java diff --git a/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java new file mode 100644 index 0000000000000..0dc47b456ae10 --- /dev/null +++ b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.test; + +import java.io.File; +import java.io.IOException; + +import net.bytebuddy.ByteBuddy; +import net.bytebuddy.description.modifier.Ownership; +import net.bytebuddy.description.modifier.Visibility; +import net.bytebuddy.description.type.TypeDescription; +import net.bytebuddy.dynamic.DynamicType; +import net.bytebuddy.dynamic.scaffold.InstrumentedType; +import net.bytebuddy.implementation.ExceptionMethod; +import net.bytebuddy.implementation.FixedValue; +import net.bytebuddy.implementation.Implementation; +import net.bytebuddy.implementation.bytecode.ByteCodeAppender; + +import static org.junit.Assert.fail; + +public class TestClasspathUtils { + + public static void setupJarJdkClasspath(File projectRoot) { + generateJdkJarHellCheck(projectRoot, FixedValue.value(TypeDescription.VOID)); + } + + public static void setupJarJdkClasspath(File projectRoot, String errorMessage) { + generateJdkJarHellCheck(projectRoot, + ExceptionMethod.throwing(IllegalStateException.class, errorMessage)); + } + + private static void generateJdkJarHellCheck(File projectRoot, Implementation mainImplementation) { + DynamicType.Unloaded dynamicType = new ByteBuddy() + .subclass(Object.class) + .name("org.elasticsearch.bootstrap.JdkJarHellCheck") + .defineMethod("main", void.class, Visibility.PUBLIC, Ownership.STATIC) + .withParameters(String[].class) + .intercept(mainImplementation) + .make(); + try { + dynamicType.toJar(targetFile(projectRoot)); + } catch (IOException e) { + e.printStackTrace(); + fail("Cannot setup jdk jar hell classpath"); + } + } + + private static File targetFile(File projectRoot) { + File targetFile = new File( + projectRoot, + "sample_jars/build/testrepo/org/elasticsearch/elasticsearch-core/current/elasticsearch-core-current.jar" + ); + + targetFile.getParentFile().mkdirs(); + return targetFile; + } + + + private static class InconsistentParameterReferenceMethod implements net.bytebuddy.implementation.Implementation { + @Override + public ByteCodeAppender appender(Target implementationTarget) { + return null; + } + + @Override + public InstrumentedType prepare(InstrumentedType instrumentedType) { + return null; + } + } + + public static class JdkJarHellBase { + public static void main(String[] args) { + System.out.println("args = " + args); + } + } +} diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/TestingConventionsTasksIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/TestingConventionsTasksIT.java similarity index 99% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/TestingConventionsTasksIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/TestingConventionsTasksIT.java index 6ecf6582e7237..ae85c8d68131c 100644 --- a/buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/TestingConventionsTasksIT.java +++ b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/TestingConventionsTasksIT.java @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.jarhell; import org.elasticsearch.gradle.internal.test.GradleIntegrationTestCase; import org.gradle.testkit.runner.BuildResult; diff --git a/buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditTaskIT.java b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/ThirdPartyAuditTaskIT.java similarity index 55% rename from buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditTaskIT.java rename to build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/ThirdPartyAuditTaskIT.java index 5bd91e0bf3ac3..5a3a968c3f6a8 100644 --- a/buildSrc/src/integTest/java/org/elasticsearch/gradle/precommit/ThirdPartyAuditTaskIT.java +++ b/build-tools-internal/src/integTest/java/org/elasticsearch/gradle/jarhell/ThirdPartyAuditTaskIT.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.jarhell; import org.elasticsearch.gradle.internal.test.GradleIntegrationTestCase; import org.gradle.testkit.runner.BuildResult; @@ -26,32 +26,33 @@ public void setUp() throws Exception { // Build the sample jars getGradleRunner().withArguments(":sample_jars:build", "-s").build(); // propagate jdkjarhell jar - setupJarJdkClasspath(getProjectDir()); } public void testElasticsearchIgnored() { BuildResult result = getGradleRunner().withArguments( - ":clean", - ":empty", - "-s", - "-PcompileOnlyGroup=elasticsearch.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=elasticsearch.gradle:dummy-io", - "-PcompileVersion=0.0.1" + ":clean", + ":empty", + "-s", + "-PcompileOnlyGroup=elasticsearch.gradle:broken-log4j", + "-PcompileOnlyVersion=0.0.1", + "-PcompileGroup=elasticsearch.gradle:dummy-io", + "-PcompileVersion=0.0.1" ).build(); assertTaskNoSource(result, ":empty"); assertNoDeprecationWarning(result); } public void testViolationFoundAndCompileOnlyIgnored() { + setupJarJdkClasspath(getProjectDir()); + BuildResult result = getGradleRunner().withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileOnlyGroup=other.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=other.gradle:dummy-io", - "-PcompileVersion=0.0.1" + ":clean", + ":absurd", + "-s", + "-PcompileOnlyGroup=other.gradle:broken-log4j", + "-PcompileOnlyVersion=0.0.1", + "-PcompileGroup=other.gradle:dummy-io", + "-PcompileVersion=0.0.1" ).buildAndFail(); assertTaskFailed(result, ":absurd"); @@ -61,44 +62,49 @@ public void testViolationFoundAndCompileOnlyIgnored() { } public void testClassNotFoundAndCompileOnlyIgnored() { + setupJarJdkClasspath(getProjectDir()); BuildResult result = getGradleRunner().withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileGroup=other.gradle:broken-log4j", - "-PcompileVersion=0.0.1", - "-PcompileOnlyGroup=other.gradle:dummy-io", - "-PcompileOnlyVersion=0.0.1" + ":clean", + ":absurd", + "-s", + "-PcompileGroup=other.gradle:broken-log4j", + "-PcompileVersion=0.0.1", + "-PcompileOnlyGroup=other.gradle:dummy-io", + "-PcompileOnlyVersion=0.0.1" ).buildAndFail(); assertTaskFailed(result, ":absurd"); assertOutputContains( - result.getOutput(), - "Missing classes:", - " * org.apache.logging.log4j.LogManager", - "> Audit of third party dependencies failed" + result.getOutput(), + "Missing classes:", + " * org.apache.logging.log4j.LogManager", + "> Audit of third party dependencies failed" ); assertOutputMissing(result.getOutput(), "Classes with violations:"); assertNoDeprecationWarning(result); } public void testJarHellWithJDK() { + setupJarJdkClasspath(getProjectDir(), "> Audit of third party dependencies failed:" + + " Jar Hell with the JDK:" + + " * java.lang.String" + ); BuildResult result = getGradleRunner().withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileGroup=other.gradle:jarhellJdk", - "-PcompileVersion=0.0.1", - "-PcompileOnlyGroup=other.gradle:dummy-io", - "-PcompileOnlyVersion=0.0.1" + ":clean", + ":absurd", + "-s", + "-PcompileGroup=other.gradle:jarhellJdk", + "-PcompileVersion=0.0.1", + "-PcompileOnlyGroup=other.gradle:dummy-io", + "-PcompileOnlyVersion=0.0.1" ).buildAndFail(); assertTaskFailed(result, ":absurd"); assertOutputContains( - result.getOutput(), - "> Audit of third party dependencies failed:", - " Jar Hell with the JDK:", - " * java.lang.String" + result.getOutput(), + "> Audit of third party dependencies failed:", + " Jar Hell with the JDK:", + " * java.lang.String" ); assertOutputMissing(result.getOutput(), "Classes with violations:"); assertNoDeprecationWarning(result); @@ -106,13 +112,13 @@ public void testJarHellWithJDK() { public void testElasticsearchIgnoredWithViolations() { BuildResult result = getGradleRunner().withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileOnlyGroup=elasticsearch.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=elasticsearch.gradle:dummy-io", - "-PcompileVersion=0.0.1" + ":clean", + ":absurd", + "-s", + "-PcompileOnlyGroup=elasticsearch.gradle:broken-log4j", + "-PcompileOnlyVersion=0.0.1", + "-PcompileGroup=elasticsearch.gradle:dummy-io", + "-PcompileVersion=0.0.1" ).build(); assertTaskNoSource(result, ":absurd"); assertNoDeprecationWarning(result); diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_linux.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_osx.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_adoptopenjdk_windows.zip diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_linux_aarch64.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_azuljdk_osx_aarch64.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/buildSrc/src/main/resources/minimumCompilerVersion diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-aarch64-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/linux-aarch64-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-aarch64-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/oss-linux-aarch64-tar/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/major/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/bwc/staged/build.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/gradle.properties diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/settings.gradle diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_linux.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_osx.tar.gz diff --git a/buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip similarity index 100% rename from buildSrc/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip rename to build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_openjdk_windows.zip diff --git a/buildSrc/src/main/groovy/elasticsearch.build-complete.gradle b/build-tools-internal/src/main/groovy/elasticsearch.build-complete.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.build-complete.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.build-complete.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.build-scan.gradle b/build-tools-internal/src/main/groovy/elasticsearch.build-scan.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.build-scan.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.build-scan.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.bwc-test.gradle b/build-tools-internal/src/main/groovy/elasticsearch.bwc-test.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.bwc-test.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.bwc-test.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.fips.gradle b/build-tools-internal/src/main/groovy/elasticsearch.fips.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.fips.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.fips.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.forbidden-dependencies.gradle b/build-tools-internal/src/main/groovy/elasticsearch.forbidden-dependencies.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.forbidden-dependencies.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.forbidden-dependencies.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.formatting.gradle b/build-tools-internal/src/main/groovy/elasticsearch.formatting.gradle similarity index 98% rename from buildSrc/src/main/groovy/elasticsearch.formatting.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.formatting.gradle index f4e1dcf1896b5..60cebf51d1b40 100644 --- a/buildSrc/src/main/groovy/elasticsearch.formatting.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.formatting.gradle @@ -165,7 +165,7 @@ subprojects { target 'src/**/*.java' removeUnusedImports() - eclipse().configFile rootProject.file('buildSrc/formatterConfig.xml') + eclipse().configFile rootProject.file('build-tools-internal/formatterConfig.xml') trimTrailingWhitespace() // See CONTRIBUTING.md for details of when to enabled this. diff --git a/buildSrc/src/main/groovy/elasticsearch.ide.gradle b/build-tools-internal/src/main/groovy/elasticsearch.ide.gradle similarity index 94% rename from buildSrc/src/main/groovy/elasticsearch.ide.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.ide.gradle index 5e08bb25fb381..d6250d3c6b76d 100644 --- a/buildSrc/src/main/groovy/elasticsearch.ide.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.ide.gradle @@ -13,17 +13,6 @@ import java.nio.file.Files import java.nio.file.Paths import java.nio.file.StandardCopyOption -buildscript { - repositories { - maven { - url "https://plugins.gradle.org/m2/" - } - } - dependencies { - classpath "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:0.7" - } -} - allprojects { apply plugin: 'idea' @@ -36,9 +25,9 @@ tasks.register('configureIdeCheckstyle') { group = 'ide' description = 'Generated a suitable checkstyle config for IDEs' - String checkstyleConfig = 'buildSrc/src/main/resources/checkstyle.xml' - String checkstyleSuppressions = 'buildSrc/src/main/resources/checkstyle_suppressions.xml' - String checkstyleIdeFragment = 'buildSrc/src/main/resources/checkstyle_ide_fragment.xml' + String checkstyleConfig = 'build-tools-internal/src/main/resources/checkstyle.xml' + String checkstyleSuppressions = 'build-tools-internal/src/main/resources/checkstyle_suppressions.xml' + String checkstyleIdeFragment = 'build-tools-internal/src/main/resources/checkstyle_ide_fragment.xml' String checkstyleIdeConfig = "$rootDir/checkstyle_ide.xml" inputs.files(file(checkstyleConfig), file(checkstyleIdeFragment)) diff --git a/buildSrc/src/main/groovy/elasticsearch.local-distribution.gradle b/build-tools-internal/src/main/groovy/elasticsearch.local-distribution.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.local-distribution.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.local-distribution.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.run.gradle b/build-tools-internal/src/main/groovy/elasticsearch.run.gradle similarity index 100% rename from buildSrc/src/main/groovy/elasticsearch.run.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.run.gradle diff --git a/buildSrc/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle b/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle similarity index 96% rename from buildSrc/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle rename to build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle index 5875bb1cbe344..8804a258f0d62 100644 --- a/buildSrc/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle @@ -24,7 +24,7 @@ jdks { } } -configure(allprojects - project(':build-tools')) { +configure(allprojects) { project.tasks.withType(Test).configureEach { Test test -> if (BuildParams.getIsRuntimeJavaHomeSet()) { test.executable = "${BuildParams.runtimeJavaHome}/bin/java" diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy similarity index 97% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy index 71ef7f0c306ce..09077cb2a9ea6 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy +++ b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntFixtureStop.groovy @@ -9,7 +9,6 @@ package org.elasticsearch.gradle.internal import org.apache.tools.ant.taskdefs.condition.Os -import org.elasticsearch.gradle.FixtureStop import org.elasticsearch.gradle.LoggedExec import org.elasticsearch.gradle.internal.test.AntFixture import org.gradle.api.file.FileSystemOperations diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/AntTask.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/DocsTestPlugin.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/RestTestsFromSnippetsTask.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/doc/SnippetsTask.groovy diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy b/build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy similarity index 100% rename from buildSrc/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy rename to build-tools-internal/src/main/groovy/org/elasticsearch/gradle/internal/test/AntFixture.groovy diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BuildPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcGitExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcSetupExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ConcatFilesTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesGraphTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DependenciesInfoTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DistributionArchive.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DistributionArchiveCheckExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/DockerBase.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java index b7b0dc53f2385..88d552d8812c4 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavaPlugin.java @@ -13,9 +13,9 @@ import org.elasticsearch.gradle.VersionProperties; import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; -import org.elasticsearch.gradle.precommit.PrecommitTaskPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitTaskPlugin; import org.elasticsearch.gradle.util.GradleUtils; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Action; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; @@ -49,7 +49,7 @@ import java.util.function.Consumer; import java.util.stream.Stream; -import static org.elasticsearch.gradle.internal.util.Util.toStringable; +import static org.elasticsearch.gradle.internal.conventions.util.Util.toStringable; /** * A wrapper around Gradle's Java plugin that applies our common configuration. diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java index 74fb37a7fabf1..857c8d50b44d6 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchTestBasePlugin.java @@ -15,7 +15,7 @@ import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; import org.elasticsearch.gradle.internal.test.ErrorReportingTestListener; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Action; import org.gradle.api.Plugin; import org.gradle.api.Project; @@ -29,7 +29,7 @@ import java.io.File; import java.util.Map; -import static org.elasticsearch.gradle.internal.util.FileUtils.mkdirs; +import static org.elasticsearch.gradle.util.FileUtils.mkdirs; import static org.elasticsearch.gradle.util.GradleUtils.maybeConfigure; /** @@ -45,10 +45,6 @@ public void apply(Project project) { maybeConfigure(project.getTasks(), "test", Test.class, task -> task.include("**/*Tests.class")); // none of this stuff is applicable to the `:buildSrc` project tests - if (project.getPath().equals(":build-tools")) { - return; - } - File heapdumpDir = new File(project.getBuildDir(), "heapdump"); project.getTasks().withType(Test.class).configureEach(test -> { diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/EmptyDirTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ExportElasticsearchBuildResourcesTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/FixtureStop.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/FixtureStop.java similarity index 90% rename from buildSrc/src/main/java/org/elasticsearch/gradle/FixtureStop.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/FixtureStop.java index c98d6110dc857..cc5a3bc2bcf2c 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/FixtureStop.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/FixtureStop.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle; +package org.elasticsearch.gradle.internal; import org.gradle.api.Task; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalAvailableTcpPortProviderPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java index fd4733c933aec..ff5692bd3d959 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalBwcGitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal; import org.elasticsearch.gradle.LoggedExec; -import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin; +import org.elasticsearch.gradle.internal.conventions.info.GitInfo; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Plugin; @@ -126,7 +126,7 @@ public void apply(Project project) { spec.commandLine("git", "checkout", effectiveRefSpec); }); - String checkoutHash = GlobalBuildInfoPlugin.gitInfo(checkoutDir).getRevision(); + String checkoutHash = GitInfo.gitInfo(checkoutDir).getRevision(); logger.lifecycle("Checkout hash for {} is {}", project.getPath(), checkoutHash); writeFile(new File(project.getBuildDir(), "refspec"), checkoutHash); }); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java index 358fc62cfdd39..3c6bc089274b8 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java @@ -9,6 +9,7 @@ package org.elasticsearch.gradle.internal; import org.elasticsearch.gradle.VersionProperties; +import org.elasticsearch.gradle.internal.conventions.LicensingPlugin; import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Project; @@ -28,8 +29,7 @@ import java.util.Map; import java.util.concurrent.Callable; import java.util.stream.Collectors; - -import static org.elasticsearch.gradle.internal.util.Util.capitalize; +import org.elasticsearch.gradle.internal.conventions.GUtils; public class InternalDistributionArchiveCheckPlugin implements InternalPlugin { @@ -43,6 +43,7 @@ public InternalDistributionArchiveCheckPlugin(ArchiveOperations archiveOperation @Override public void apply(Project project) { project.getPlugins().apply(BasePlugin.class); + project.getPlugins().apply(LicensingPlugin.class); String buildTaskName = calculateBuildTask(project.getName()); TaskProvider buildDistTask = project.getParent().getTasks().named(buildTaskName); DistributionArchiveCheckExtension distributionArchiveCheckExtension = project.getExtensions() @@ -238,7 +239,7 @@ public String toString() { } private String calculateBuildTask(String projectName) { - return "build" + Arrays.stream(projectName.split("-")).map(f -> capitalize(f)).collect(Collectors.joining()); + return "build" + Arrays.stream(projectName.split("-")).map(f -> GUtils.capitalize(f)).collect(Collectors.joining()); } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java index b4ce2ff41ae20..182c8145b0db2 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java @@ -20,8 +20,8 @@ import org.gradle.api.tasks.bundling.Zip; import java.io.File; +import static org.elasticsearch.gradle.internal.conventions.GUtils.capitalize; -import static org.elasticsearch.gradle.internal.util.Util.capitalize; import static org.gradle.api.internal.artifacts.ArtifactAttributes.ARTIFACT_FORMAT; /** diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java index e6285626999e3..9b1c590e8108d 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalPluginBuildPlugin.java @@ -11,7 +11,7 @@ import groovy.lang.Closure; import org.elasticsearch.gradle.internal.precommit.TestingConventionsTasks; import org.elasticsearch.gradle.internal.test.RestTestBasePlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.elasticsearch.gradle.plugin.PluginBuildPlugin; import org.elasticsearch.gradle.plugin.PluginPropertiesExtension; import org.elasticsearch.gradle.util.GradleUtils; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalReaperPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactBasePlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestClustersPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JavaClassPublicifier.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/Jdk.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/Jdk.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/Jdk.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/Jdk.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/JdkDownloadPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/LoggingOutputStream.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/MavenFilteringHack.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java index a23b8a2ffc0ec..b51f0603833a8 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/NoticeTask.java @@ -19,7 +19,7 @@ import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; -import org.elasticsearch.gradle.internal.util.FileUtils; +import org.elasticsearch.gradle.util.FileUtils; import java.io.File; import java.io.IOException; import java.util.ArrayList; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java similarity index 75% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java index 21332013a6ce8..e0da9de8f5256 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RepositoriesSetupPlugin.java @@ -25,7 +25,6 @@ public class RepositoriesSetupPlugin implements Plugin { - private static final List SECURE_URL_SCHEMES = Arrays.asList("file", "https", "s3"); private static final Pattern LUCENE_SNAPSHOT_REGEX = Pattern.compile("\\w+-snapshot-([a-z0-9]+)"); @Override @@ -66,24 +65,4 @@ public static void configureRepositories(Project project) { }); } } - - private static void assertRepositoryURIIsSecure(final String repositoryName, final String projectPath, final URI uri) { - if (uri != null && SECURE_URL_SCHEMES.contains(uri.getScheme()) == false && uri.getHost().equals("localhost") == false) { - String url; - try { - url = uri.toURL().toString(); - } catch (MalformedURLException e) { - throw new IllegalStateException(e); - } - final String message = String.format( - Locale.ROOT, - "repository [%s] on project with path [%s] is not using a secure protocol for artifacts on [%s]", - repositoryName, - projectPath, - url - ); - throw new GradleException(message); - } - } - } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/SymbolicLinkPreservingTar.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/checkstyle/MissingJavadocTypeCheck.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/checkstyle/SnippetLengthCheck.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DebElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerIronBankElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/DockerUbiElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/InternalElasticsearchDistributionTypes.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/distribution/RpmElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerBuildTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/DockerSupportService.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/ShellRetry.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilter.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java similarity index 70% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java index e7a28fbcb5bfa..02062b9eb6556 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java @@ -10,7 +10,9 @@ import org.apache.commons.io.IOUtils; import org.elasticsearch.gradle.internal.BwcVersions; import org.elasticsearch.gradle.OS; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.info.GitInfo; +import org.elasticsearch.gradle.internal.conventions.info.ParallelDetector; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.GradleException; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; @@ -26,6 +28,7 @@ import org.gradle.jvm.toolchain.internal.InstallationLocation; import org.gradle.jvm.toolchain.internal.JavaInstallationRegistry; import org.gradle.util.GradleVersion; +import org.jetbrains.annotations.NotNull; import javax.inject.Inject; import java.io.BufferedReader; @@ -34,22 +37,17 @@ import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; import java.io.UncheckedIOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.util.Arrays; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Random; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -78,22 +76,22 @@ public void apply(Project project) { if (project != project.getRootProject()) { throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project."); } - GradleVersion minimumGradleVersion = GradleVersion.version(Util.getResourceContents("/minimumGradleVersion")); + GradleVersion minimumGradleVersion = GradleVersion.version(getResourceContents("/minimumGradleVersion")); if (GradleVersion.current().compareTo(minimumGradleVersion) < 0) { throw new GradleException("Gradle " + minimumGradleVersion.getVersion() + "+ is required"); } - JavaVersion minimumCompilerVersion = JavaVersion.toVersion(Util.getResourceContents("/minimumCompilerVersion")); - JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(Util.getResourceContents("/minimumRuntimeVersion")); + JavaVersion minimumCompilerVersion = JavaVersion.toVersion(getResourceContents("/minimumCompilerVersion")); + JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(getResourceContents("/minimumRuntimeVersion")); File runtimeJavaHome = findRuntimeJavaHome(); File rootDir = project.getRootDir(); - GitInfo gitInfo = gitInfo(rootDir); + GitInfo gitInfo = GitInfo.gitInfo(rootDir); BuildParams.init(params -> { // Initialize global build parameters - boolean isInternal = GlobalBuildInfoPlugin.class.getResource("/buildSrc.marker") != null; + boolean isInternal = GlobalBuildInfoPlugin.class.getResource("/buildSrc.marker") != null && explicitDisabledInternal(project) == false; params.reset(); params.setRuntimeJavaHome(runtimeJavaHome); @@ -111,7 +109,7 @@ public void apply(Project project) { params.setTestSeed(getTestSeed()); params.setIsCi(System.getenv("JENKINS_URL") != null); params.setIsInternal(isInternal); - params.setDefaultParallel(findDefaultParallel(project)); + params.setDefaultParallel(ParallelDetector.findDefaultParallel(project)); params.setInFipsJvm(Util.getBooleanProperty("tests.fips.enabled", false)); params.setIsSnapshotBuild(Util.getBooleanProperty("build.snapshot", true)); if (isInternal) { @@ -126,6 +124,14 @@ public void apply(Project project) { project.getGradle().getTaskGraph().whenReady(graph -> logGlobalBuildInfo()); } + @NotNull + private Boolean explicitDisabledInternal(Project project) { + return project.getProviders().systemProperty("test.external") + .forUseAtConfigurationTime() + .map(sysProp -> sysProp.equals("true")) + .getOrElse(false); + } + private String formatJavaVendorDetails(JvmInstallationMetadata runtimeJdkMetaData) { JvmVendor vendor = runtimeJdkMetaData.getVendor(); return runtimeJdkMetaData.getVendor().getKnownVendor().name() + "/" + vendor.getRawVendor(); @@ -353,141 +359,24 @@ private static int findDefaultParallel(Project project) { return _defaultParallel; } - public static GitInfo gitInfo(File rootDir) { - try { - /* - * We want to avoid forking another process to run git rev-parse HEAD. Instead, we will read the refs manually. The - * documentation for this follows from https://git-scm.com/docs/gitrepository-layout and https://git-scm.com/docs/git-worktree. - * - * There are two cases to consider: - * - a plain repository with .git directory at the root of the working tree - * - a worktree with a plain text .git file at the root of the working tree - * - * In each case, our goal is to parse the HEAD file to get either a ref or a bare revision (in the case of being in detached - * HEAD state). - * - * In the case of a plain repository, we can read the HEAD file directly, resolved directly from the .git directory. - * - * In the case of a worktree, we read the gitdir from the plain text .git file. This resolves to a directory from which we read - * the HEAD file and resolve commondir to the plain git repository. - */ - final Path dotGit = rootDir.toPath().resolve(".git"); - final String revision; - if (Files.exists(dotGit) == false) { - return new GitInfo("unknown", "unknown"); - } - final Path head; - final Path gitDir; - if (Files.isDirectory(dotGit)) { - // this is a git repository, we can read HEAD directly - head = dotGit.resolve("HEAD"); - gitDir = dotGit; - } else { - // this is a git worktree, follow the pointer to the repository - final Path workTree = Paths.get(readFirstLine(dotGit).substring("gitdir:".length()).trim()); - if (Files.exists(workTree) == false) { - return new GitInfo("unknown", "unknown"); - } - head = workTree.resolve("HEAD"); - final Path commonDir = Paths.get(readFirstLine(workTree.resolve("commondir"))); - if (commonDir.isAbsolute()) { - gitDir = commonDir; - } else { - // this is the common case - gitDir = workTree.resolve(commonDir); - } - } - final String ref = readFirstLine(head); - if (ref.startsWith("ref:")) { - String refName = ref.substring("ref:".length()).trim(); - Path refFile = gitDir.resolve(refName); - if (Files.exists(refFile)) { - revision = readFirstLine(refFile); - } else if (Files.exists(gitDir.resolve("packed-refs"))) { - // Check packed references for commit ID - Pattern p = Pattern.compile("^([a-f0-9]{40}) " + refName + "$"); - try (Stream lines = Files.lines(gitDir.resolve("packed-refs"))) { - revision = lines.map(p::matcher) - .filter(Matcher::matches) - .map(m -> m.group(1)) - .findFirst() - .orElseThrow(() -> new IOException("Packed reference not found for refName " + refName)); - } - } else { - File refsDir = gitDir.resolve("refs").toFile(); - if (refsDir.exists()) { - String foundRefs = Arrays.stream(refsDir.listFiles()).map(f -> f.getName()).collect(Collectors.joining("\n")); - Logging.getLogger(GlobalBuildInfoPlugin.class).error("Found git refs\n" + foundRefs); - } else { - Logging.getLogger(GlobalBuildInfoPlugin.class).error("No git refs dir found"); - } - throw new GradleException("Can't find revision for refName " + refName); - } - } else { - // we are in detached HEAD state - revision = ref; - } - return new GitInfo(revision, findOriginUrl(gitDir.resolve("config"))); - } catch (final IOException e) { - // for now, do not be lenient until we have better understanding of real-world scenarios where this happens - throw new GradleException("unable to read the git revision", e); - } - } - private static String findOriginUrl(final Path configFile) throws IOException { - Map props = new HashMap<>(); - - try (Stream stream = Files.lines(configFile, StandardCharsets.UTF_8)) { - Iterator lines = stream.iterator(); - boolean foundOrigin = false; - while (lines.hasNext()) { - String line = lines.next().trim(); - if (line.startsWith(";") || line.startsWith("#")) { - // ignore comments - continue; - } - if (foundOrigin) { - if (line.startsWith("[")) { - // we're on to the next config item so stop looking - break; - } - String[] pair = line.trim().split("=", 2); - props.put(pair[0].trim(), pair[1].trim()); - } else { - if (line.equals("[remote \"origin\"]")) { - foundOrigin = true; - } + public static String getResourceContents(String resourcePath) { + try ( + BufferedReader reader = new BufferedReader(new InputStreamReader(GlobalBuildInfoPlugin.class.getResourceAsStream(resourcePath))) + ) { + StringBuilder b = new StringBuilder(); + for (String line = reader.readLine(); line != null; line = reader.readLine()) { + if (b.length() != 0) { + b.append('\n'); } + b.append(line); } - } - String originUrl = props.get("url"); - return originUrl == null ? "unknown" : originUrl; - } - - private static String readFirstLine(final Path path) throws IOException { - String firstLine; - try (Stream lines = Files.lines(path, StandardCharsets.UTF_8)) { - firstLine = lines.findFirst().orElseThrow(() -> new IOException("file [" + path + "] is empty")); + return b.toString(); + } catch (IOException e) { + throw new UncheckedIOException("Error trying to read classpath resource: " + resourcePath, e); } - return firstLine; } - public static class GitInfo { - private final String revision; - private final String origin; - GitInfo(String revision, String origin) { - this.revision = revision; - this.origin = origin; - } - - public String getRevision() { - return revision; - } - - public String getOrigin() { - return origin; - } - } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/JavaHome.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java similarity index 88% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java index b03a0d2c50532..d2baacc114451 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/CheckstylePrecommitPlugin.java @@ -10,9 +10,10 @@ import org.elasticsearch.gradle.VersionProperties; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Action; +import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.dsl.DependencyHandler; @@ -25,6 +26,8 @@ import java.io.InputStream; import java.io.UncheckedIOException; import java.net.JarURLConnection; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Files; import java.nio.file.StandardCopyOption; @@ -86,7 +89,7 @@ public void execute(Task task) { DependencyHandler dependencies = project.getDependencies(); String checkstyleVersion = VersionProperties.getVersions().get("checkstyle"); dependencies.add("checkstyle", "com.puppycrawl.tools:checkstyle:" + checkstyleVersion); - dependencies.add("checkstyle", project.files(Util.getBuildSrcCodeSource())); + dependencies.add("checkstyle", project.files(getBuildSrcCodeSource())); project.getTasks().withType(Checkstyle.class).configureEach(t -> { t.dependsOn(copyCheckstyleConf); @@ -95,4 +98,12 @@ public void execute(Task task) { return checkstyleTask; } + + private static URI getBuildSrcCodeSource() { + try { + return CheckstylePrecommitPlugin.class.getProtectionDomain().getCodeSource().getLocation().toURI(); + } catch (URISyntaxException e) { + throw new GradleException("Error determining build tools JAR location", e); + } + } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java similarity index 96% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java index 748553349dc98..669ecc0eb2de4 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesPrecommitPlugin.java @@ -10,7 +10,7 @@ import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java similarity index 95% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java index a371fc38cfcd4..df39b9088c973 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Project; import org.gradle.api.Task; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java index ce74a0450e34f..24d5bb7177e04 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenApisPrecommitPlugin.java @@ -14,7 +14,7 @@ import org.elasticsearch.gradle.internal.ExportElasticsearchBuildResourcesTask; import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.JavaVersion; import org.gradle.api.Project; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java similarity index 95% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java index b26a2b109abec..4a3a4f0c5745d 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Project; import org.gradle.api.Task; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java similarity index 78% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java index d74c03fc161c1..5eaf30ef55dc8 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/InternalPrecommitTasks.java @@ -8,8 +8,7 @@ package org.elasticsearch.gradle.internal.precommit; -import org.elasticsearch.gradle.internal.info.BuildParams; -import org.elasticsearch.gradle.precommit.PrecommitTasks; +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersPrecommitPlugin; import org.gradle.api.Project; /** @@ -21,13 +20,7 @@ public class InternalPrecommitTasks { * Adds a precommit task, which depends on non-test verification tasks. */ public static void create(Project project, boolean includeDependencyLicenses) { - PrecommitTasks.create(project); - if (BuildParams.isInternal() && project.getPath().equals(":libs:elasticsearch-core") == false) { - // ideally we would configure this as a default dependency. But Default dependencies do not work correctly - // with gradle project dependencies as they're resolved to late in the build and don't setup according task - // dependencies properly - project.getDependencies().add("jarHell", project.project(":libs:elasticsearch-core")); - } + project.getPluginManager().apply(JarHellPrecommitPlugin.class); project.getPluginManager().apply(ThirdPartyAuditPrecommitPlugin.class); project.getPluginManager().apply(CheckstylePrecommitPlugin.class); project.getPluginManager().apply(ForbiddenApisPrecommitPlugin.class); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/JarHellPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/JarHellPrecommitPlugin.java new file mode 100644 index 0000000000000..3efd37b85bb02 --- /dev/null +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/JarHellPrecommitPlugin.java @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.precommit; + +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.info.BuildParams; +import org.elasticsearch.gradle.jarhell.JarHellPlugin; +import org.elasticsearch.gradle.jarhell.JarHellTask; +import org.gradle.api.Project; +import org.gradle.api.Task; +import org.gradle.api.tasks.TaskProvider; + +public class JarHellPrecommitPlugin extends PrecommitPlugin { + @Override + public TaskProvider createTask(Project project) { + project.getPluginManager().apply(JarHellPlugin.class); + + if (BuildParams.isInternal() && project.getPath().equals(":libs:elasticsearch-core") == false) { + // ideally we would configure this as a default dependency. But Default dependencies do not work correctly + // with gradle project dependencies as they're resolved to late in the build and don't setup according task + // dependencies properly + project.getDependencies().add("jarHell", project.project(":libs:elasticsearch-core")); + } + + return project.getTasks().withType(JarHellTask.class).named("jarHell"); + } +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LicenseAnalyzer.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java similarity index 94% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java index 1f1e458f97cd2..2e52346a10b11 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsagePrecommitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java index 89020f87e2970..69487778ebce0 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/LoggerUsageTask.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.LoggedExec; -import org.elasticsearch.gradle.precommit.PrecommitTask; +import org.elasticsearch.gradle.internal.conventions.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/internal/precommit/TestingConventionRule.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionRule.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java similarity index 94% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java index 8f4af8616b6e9..48c40ba65f95d 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.tasks.TaskProvider; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java index 7e4e18b49ec29..0177564e6ebb8 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java @@ -9,7 +9,7 @@ import groovy.lang.Closure; import org.elasticsearch.gradle.util.GradleUtils; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.DefaultTask; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Task; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java index 305571b6d9ff4..1dbba30238f8e 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java @@ -12,7 +12,7 @@ import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin; import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.precommit.PrecommitPlugin; +import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonAgainstSchemaTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateJsonNoKeywordsTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java index 138b3148dce89..76c105be7ab88 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ValidateRestSpecPlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.precommit; import org.elasticsearch.gradle.internal.InternalPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Project; import org.gradle.api.provider.Provider; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/rest/compat/RestCompatTestTransformTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/rest/compat/RestCompatTestTransformTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/rest/compat/RestCompatTestTransformTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/rest/compat/RestCompatTestTransformTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/rest/compat/YamlRestCompatTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/rest/compat/YamlRestCompatTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/rest/compat/YamlRestCompatTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/rest/compat/YamlRestCompatTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java index 4a2a684135c4a..ff6722895e4ed 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java @@ -22,9 +22,10 @@ import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.InternalDistributionDownloadPlugin; import org.elasticsearch.gradle.util.GradleUtils; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.elasticsearch.gradle.internal.vagrant.VagrantBasePlugin; import org.elasticsearch.gradle.internal.vagrant.VagrantExtension; +import org.elasticsearch.gradle.internal.conventions.GUtils; import org.gradle.api.Action; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Plugin; @@ -265,7 +266,7 @@ private static TaskProvider createJdk( jdk.setPlatform(platform); jdk.setArchitecture(architecture); - String taskname = "copy" + Util.capitalize(platform) + Util.capitalize(purpose) + "Jdk"; + String taskname = "copy" + GUtils.capitalize(platform) + GUtils.capitalize(purpose) + "Jdk"; TaskProvider copyTask = project.getTasks().register(taskname, Copy.class); copyTask.configure(t -> { t.from(jdk); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/ErrorReportingTestListener.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/Fixture.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/GradleDistroTestTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/InternalClusterTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestIntegTestTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java index 824153764da3e..ae6b7e70343a0 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java @@ -9,7 +9,7 @@ package org.elasticsearch.gradle.internal.test; import org.elasticsearch.gradle.internal.ElasticsearchTestBasePlugin; -import org.elasticsearch.gradle.FixtureStop; +import org.elasticsearch.gradle.internal.FixtureStop; import org.elasticsearch.gradle.testclusters.ElasticsearchCluster; import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask; import org.elasticsearch.gradle.testclusters.TestClustersPlugin; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/SimpleCommandLineArgumentProvider.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java similarity index 97% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java index f4f5e26ace2f8..86e0aa19b168c 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java @@ -14,7 +14,6 @@ import org.elasticsearch.gradle.internal.info.BuildParams; import org.elasticsearch.gradle.internal.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; import org.gradle.api.Plugin; @@ -87,6 +86,6 @@ public void apply(final Project project) { "TEST", Map.of("plus", Arrays.asList(project.getConfigurations().getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME))) ); - BuildParams.withInternalBuild(() -> InternalPrecommitTasks.create(project, false)).orElse(() -> PrecommitTasks.create(project)); + BuildParams.withInternalBuild(() -> InternalPrecommitTasks.create(project, false)); } } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/SystemPropertyCommandLineArgumentProvider.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithDependenciesPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java index c748532f828d5..80b7144e45e30 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/TestWithSslPlugin.java @@ -16,7 +16,7 @@ import org.elasticsearch.gradle.testclusters.ElasticsearchCluster; import org.elasticsearch.gradle.testclusters.TestClustersAware; import org.elasticsearch.gradle.testclusters.TestClustersPlugin; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Plugin; import org.gradle.api.Project; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestRerunTaskExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/TestTaskConfigurer.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestExecuter.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestApiTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/JavaRestTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestResourcesPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/RestTestUtil.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/YamlRestTestPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/ReplaceByKey.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestContext.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestContext.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestContext.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestContext.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransform.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentArray.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentArray.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentArray.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentArray.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentObject.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentObject.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentObject.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformByParentObject.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalSetup.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformGlobalTeardown.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/RestTestTransformer.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDo.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDo.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDo.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDo.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/FeatureInjector.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/FeatureInjector.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/FeatureInjector.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/FeatureInjector.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/headers/InjectHeaders.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/headers/InjectHeaders.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/headers/InjectHeaders.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/headers/InjectHeaders.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLength.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLength.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLength.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLength.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatch.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatch.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatch.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatch.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatch.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatch.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatch.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatch.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatch.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatch.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsFalse.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceIsTrue.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextual.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarnings.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarnings.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarnings.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarnings.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarnings.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarnings.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarnings.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarnings.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarnings.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarnings.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarnings.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarnings.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/DockerComposeThrottle.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixtureExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/testfixtures/TestFixturesPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/JavaUtil.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/AvailablePortAllocator.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultPortDetector.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/DefaultReservedPortRangeFactory.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/PortDetector.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRange.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/ports/ReservedPortRangeFactory.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantBasePlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java index 757db5719f238..df2bcc3e2a96a 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantMachine.java @@ -12,7 +12,7 @@ import org.elasticsearch.gradle.LoggedExec; import org.elasticsearch.gradle.internal.LoggingOutputStream; import org.elasticsearch.gradle.ReaperService; -import org.elasticsearch.gradle.internal.util.Util; +import org.elasticsearch.gradle.internal.conventions.util.Util; import org.gradle.api.Action; import org.gradle.api.Project; import org.gradle.api.provider.Provider; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantProgressLogger.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java rename to build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/vagrant/VagrantShellTask.java diff --git a/buildSrc/src/main/resources/buildSrc.marker b/build-tools-internal/src/main/resources/buildSrc.marker similarity index 100% rename from buildSrc/src/main/resources/buildSrc.marker rename to build-tools-internal/src/main/resources/buildSrc.marker diff --git a/buildSrc/src/main/resources/cacerts.bcfks b/build-tools-internal/src/main/resources/cacerts.bcfks similarity index 100% rename from buildSrc/src/main/resources/cacerts.bcfks rename to build-tools-internal/src/main/resources/cacerts.bcfks diff --git a/buildSrc/src/main/resources/checkstyle.xml b/build-tools-internal/src/main/resources/checkstyle.xml similarity index 100% rename from buildSrc/src/main/resources/checkstyle.xml rename to build-tools-internal/src/main/resources/checkstyle.xml diff --git a/buildSrc/src/main/resources/checkstyle_ide_fragment.xml b/build-tools-internal/src/main/resources/checkstyle_ide_fragment.xml similarity index 100% rename from buildSrc/src/main/resources/checkstyle_ide_fragment.xml rename to build-tools-internal/src/main/resources/checkstyle_ide_fragment.xml diff --git a/buildSrc/src/main/resources/checkstyle_suppressions.xml b/build-tools-internal/src/main/resources/checkstyle_suppressions.xml similarity index 96% rename from buildSrc/src/main/resources/checkstyle_suppressions.xml rename to build-tools-internal/src/main/resources/checkstyle_suppressions.xml index b51ae0e2fb82c..0d60afafd4673 100644 --- a/buildSrc/src/main/resources/checkstyle_suppressions.xml +++ b/build-tools-internal/src/main/resources/checkstyle_suppressions.xml @@ -48,5 +48,5 @@ - + diff --git a/buildSrc/src/main/resources/deb/README b/build-tools-internal/src/main/resources/deb/README similarity index 100% rename from buildSrc/src/main/resources/deb/README rename to build-tools-internal/src/main/resources/deb/README diff --git a/buildSrc/src/main/resources/deb/conffiles.ftl b/build-tools-internal/src/main/resources/deb/conffiles.ftl similarity index 100% rename from buildSrc/src/main/resources/deb/conffiles.ftl rename to build-tools-internal/src/main/resources/deb/conffiles.ftl diff --git a/buildSrc/src/main/resources/deb/postinst.ftl b/build-tools-internal/src/main/resources/deb/postinst.ftl similarity index 100% rename from buildSrc/src/main/resources/deb/postinst.ftl rename to build-tools-internal/src/main/resources/deb/postinst.ftl diff --git a/buildSrc/src/main/resources/deb/preinst.ftl b/build-tools-internal/src/main/resources/deb/preinst.ftl similarity index 100% rename from buildSrc/src/main/resources/deb/preinst.ftl rename to build-tools-internal/src/main/resources/deb/preinst.ftl diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs b/build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs similarity index 100% rename from buildSrc/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs rename to build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs b/build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs rename to build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs b/build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs rename to build-tools-internal/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs diff --git a/buildSrc/src/main/resources/elasticsearch.properties b/build-tools-internal/src/main/resources/elasticsearch.properties similarity index 100% rename from buildSrc/src/main/resources/elasticsearch.properties rename to build-tools-internal/src/main/resources/elasticsearch.properties diff --git a/buildSrc/src/main/resources/fips_java.policy b/build-tools-internal/src/main/resources/fips_java.policy similarity index 100% rename from buildSrc/src/main/resources/fips_java.policy rename to build-tools-internal/src/main/resources/fips_java.policy diff --git a/buildSrc/src/main/resources/fips_java.security b/build-tools-internal/src/main/resources/fips_java.security similarity index 100% rename from buildSrc/src/main/resources/fips_java.security rename to build-tools-internal/src/main/resources/fips_java.security diff --git a/buildSrc/src/main/resources/fips_java_oracle.security b/build-tools-internal/src/main/resources/fips_java_oracle.security similarity index 100% rename from buildSrc/src/main/resources/fips_java_oracle.security rename to build-tools-internal/src/main/resources/fips_java_oracle.security diff --git a/buildSrc/src/main/resources/forbidden/es-all-signatures.txt b/build-tools-internal/src/main/resources/forbidden/es-all-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/es-all-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/es-all-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/es-server-signatures.txt b/build-tools-internal/src/main/resources/forbidden/es-server-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/es-server-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/es-server-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/es-test-signatures.txt b/build-tools-internal/src/main/resources/forbidden/es-test-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/es-test-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/es-test-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/http-signatures.txt b/build-tools-internal/src/main/resources/forbidden/http-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/http-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/http-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/jdk-signatures.txt b/build-tools-internal/src/main/resources/forbidden/jdk-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/jdk-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/jdk-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/snakeyaml-signatures.txt b/build-tools-internal/src/main/resources/forbidden/snakeyaml-signatures.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/snakeyaml-signatures.txt rename to build-tools-internal/src/main/resources/forbidden/snakeyaml-signatures.txt diff --git a/buildSrc/src/main/resources/forbidden/third-party-audit.txt b/build-tools-internal/src/main/resources/forbidden/third-party-audit.txt similarity index 100% rename from buildSrc/src/main/resources/forbidden/third-party-audit.txt rename to build-tools-internal/src/main/resources/forbidden/third-party-audit.txt diff --git a/buildSrc/src/main/resources/license-headers/elastic-license-2.0-header.txt b/build-tools-internal/src/main/resources/license-headers/elastic-license-2.0-header.txt similarity index 100% rename from buildSrc/src/main/resources/license-headers/elastic-license-2.0-header.txt rename to build-tools-internal/src/main/resources/license-headers/elastic-license-2.0-header.txt diff --git a/buildSrc/src/main/resources/license-headers/sspl+elastic-license-header.txt b/build-tools-internal/src/main/resources/license-headers/sspl+elastic-license-header.txt similarity index 100% rename from buildSrc/src/main/resources/license-headers/sspl+elastic-license-header.txt rename to build-tools-internal/src/main/resources/license-headers/sspl+elastic-license-header.txt diff --git a/buildSrc/src/main/resources/minimumCompilerVersion b/build-tools-internal/src/main/resources/minimumCompilerVersion similarity index 100% rename from buildSrc/src/main/resources/minimumCompilerVersion rename to build-tools-internal/src/main/resources/minimumCompilerVersion diff --git a/buildSrc/src/main/resources/minimumGradleVersion b/build-tools-internal/src/main/resources/minimumGradleVersion similarity index 100% rename from buildSrc/src/main/resources/minimumGradleVersion rename to build-tools-internal/src/main/resources/minimumGradleVersion diff --git a/buildSrc/src/main/resources/minimumRuntimeVersion b/build-tools-internal/src/main/resources/minimumRuntimeVersion similarity index 100% rename from buildSrc/src/main/resources/minimumRuntimeVersion rename to build-tools-internal/src/main/resources/minimumRuntimeVersion diff --git a/buildSrc/src/main/resources/test/ssl/README.md b/build-tools-internal/src/main/resources/test/ssl/README.md similarity index 100% rename from buildSrc/src/main/resources/test/ssl/README.md rename to build-tools-internal/src/main/resources/test/ssl/README.md diff --git a/buildSrc/src/main/resources/test/ssl/test-client.crt b/build-tools-internal/src/main/resources/test/ssl/test-client.crt similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-client.crt rename to build-tools-internal/src/main/resources/test/ssl/test-client.crt diff --git a/buildSrc/src/main/resources/test/ssl/test-client.jks b/build-tools-internal/src/main/resources/test/ssl/test-client.jks similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-client.jks rename to build-tools-internal/src/main/resources/test/ssl/test-client.jks diff --git a/buildSrc/src/main/resources/test/ssl/test-client.key b/build-tools-internal/src/main/resources/test/ssl/test-client.key similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-client.key rename to build-tools-internal/src/main/resources/test/ssl/test-client.key diff --git a/buildSrc/src/main/resources/test/ssl/test-node.crt b/build-tools-internal/src/main/resources/test/ssl/test-node.crt similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-node.crt rename to build-tools-internal/src/main/resources/test/ssl/test-node.crt diff --git a/buildSrc/src/main/resources/test/ssl/test-node.jks b/build-tools-internal/src/main/resources/test/ssl/test-node.jks similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-node.jks rename to build-tools-internal/src/main/resources/test/ssl/test-node.jks diff --git a/buildSrc/src/main/resources/test/ssl/test-node.key b/build-tools-internal/src/main/resources/test/ssl/test-node.key similarity index 100% rename from buildSrc/src/main/resources/test/ssl/test-node.key rename to build-tools-internal/src/main/resources/test/ssl/test-node.key diff --git a/buildSrc/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy b/build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy similarity index 100% rename from buildSrc/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy rename to build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/AbstractDistributionDownloadPluginTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/VersionTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/VersionTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/VersionTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/VersionTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/BwcVersionsTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/ConcatFilesTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/EmptyDirTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/InternalDistributionDownloadPluginTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/JdkDownloadPluginTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/checkstyle/SnipptLengthCheckTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/doc/RestTestFromSnippetsTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/doc/SnippetsTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/docker/DockerSupportServiceTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/docker/TransformLog4jConfigFilterTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/precommit/UpdateShasTaskTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/AssertObjectNodes.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/AssertObjectNodes.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/AssertObjectNodes.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/AssertObjectNodes.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/TransformTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/TransformTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/TransformTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/TransformTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDoTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDoTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDoTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/do_/ReplaceKeyInDoTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/InjectFeatureTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/InjectFeatureTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/InjectFeatureTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/feature/InjectFeatureTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/header/InjectHeaderTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/header/InjectHeaderTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/header/InjectHeaderTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/header/InjectHeaderTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLengthTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLengthTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLengthTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/length/ReplaceKeyInLengthTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/AddMatchTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatchTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatchTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatchTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/RemoveMatchTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatchTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatchTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatchTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceKeyInMatchTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/match/ReplaceValueInMatchTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/text/ReplaceTextualTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsRegexTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsRegexTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsRegexTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsRegexTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectAllowedWarningsTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsRegexTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsRegexTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsRegexTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsRegexTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/InjectWarningsTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarningsTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarningsTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarningsTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/internal/test/rest/transform/warnings/RemoveWarningsTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java b/build-tools-internal/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java similarity index 100% rename from buildSrc/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java rename to build-tools-internal/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java diff --git a/buildSrc/src/test/resources/ca.p12 b/build-tools-internal/src/test/resources/ca.p12 similarity index 100% rename from buildSrc/src/test/resources/ca.p12 rename to build-tools-internal/src/test/resources/ca.p12 diff --git a/buildSrc/src/test/resources/ca.pem b/build-tools-internal/src/test/resources/ca.pem similarity index 100% rename from buildSrc/src/test/resources/ca.pem rename to build-tools-internal/src/test/resources/ca.pem diff --git a/buildSrc/src/test/resources/rest/transform/do/replace_key_in_do_original.yml b/build-tools-internal/src/test/resources/rest/transform/do/replace_key_in_do_original.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/do/replace_key_in_do_original.yml rename to build-tools-internal/src/test/resources/rest/transform/do/replace_key_in_do_original.yml diff --git a/buildSrc/src/test/resources/rest/transform/do/replace_key_in_do_transformed.yml b/build-tools-internal/src/test/resources/rest/transform/do/replace_key_in_do_transformed.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/do/replace_key_in_do_transformed.yml rename to build-tools-internal/src/test/resources/rest/transform/do/replace_key_in_do_transformed.yml diff --git a/buildSrc/src/test/resources/rest/transform/feature/with_feature_predefined.yml b/build-tools-internal/src/test/resources/rest/transform/feature/with_feature_predefined.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/feature/with_feature_predefined.yml rename to build-tools-internal/src/test/resources/rest/transform/feature/with_feature_predefined.yml diff --git a/buildSrc/src/test/resources/rest/transform/feature/with_multiple_feature.yml b/build-tools-internal/src/test/resources/rest/transform/feature/with_multiple_feature.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/feature/with_multiple_feature.yml rename to build-tools-internal/src/test/resources/rest/transform/feature/with_multiple_feature.yml diff --git a/buildSrc/src/test/resources/rest/transform/feature/with_setup_no_feature.yml b/build-tools-internal/src/test/resources/rest/transform/feature/with_setup_no_feature.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/feature/with_setup_no_feature.yml rename to build-tools-internal/src/test/resources/rest/transform/feature/with_setup_no_feature.yml diff --git a/buildSrc/src/test/resources/rest/transform/feature/with_setup_no_skip.yml b/build-tools-internal/src/test/resources/rest/transform/feature/with_setup_no_skip.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/feature/with_setup_no_skip.yml rename to build-tools-internal/src/test/resources/rest/transform/feature/with_setup_no_skip.yml diff --git a/buildSrc/src/test/resources/rest/transform/feature/with_single_feature.yml b/build-tools-internal/src/test/resources/rest/transform/feature/with_single_feature.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/feature/with_single_feature.yml rename to build-tools-internal/src/test/resources/rest/transform/feature/with_single_feature.yml diff --git a/buildSrc/src/test/resources/rest/transform/feature/without_setup.yml b/build-tools-internal/src/test/resources/rest/transform/feature/without_setup.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/feature/without_setup.yml rename to build-tools-internal/src/test/resources/rest/transform/feature/without_setup.yml diff --git a/buildSrc/src/test/resources/rest/transform/header/with_existing_headers.yml b/build-tools-internal/src/test/resources/rest/transform/header/with_existing_headers.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/header/with_existing_headers.yml rename to build-tools-internal/src/test/resources/rest/transform/header/with_existing_headers.yml diff --git a/buildSrc/src/test/resources/rest/transform/header/without_existing_headers.yml b/build-tools-internal/src/test/resources/rest/transform/header/without_existing_headers.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/header/without_existing_headers.yml rename to build-tools-internal/src/test/resources/rest/transform/header/without_existing_headers.yml diff --git a/buildSrc/src/test/resources/rest/transform/length/length_replace_original.yml b/build-tools-internal/src/test/resources/rest/transform/length/length_replace_original.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/length/length_replace_original.yml rename to build-tools-internal/src/test/resources/rest/transform/length/length_replace_original.yml diff --git a/buildSrc/src/test/resources/rest/transform/length/length_replace_transformed.yml b/build-tools-internal/src/test/resources/rest/transform/length/length_replace_transformed.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/length/length_replace_transformed.yml rename to build-tools-internal/src/test/resources/rest/transform/length/length_replace_transformed.yml diff --git a/buildSrc/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_original.yml b/build-tools-internal/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_original.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_original.yml rename to build-tools-internal/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_original.yml diff --git a/buildSrc/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_transformed.yml b/build-tools-internal/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_transformed.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_transformed.yml rename to build-tools-internal/src/test/resources/rest/transform/match/key_replace/replace_key_in_match_transformed.yml diff --git a/buildSrc/src/test/resources/rest/transform/match/match_original.yml b/build-tools-internal/src/test/resources/rest/transform/match/match_original.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/match/match_original.yml rename to build-tools-internal/src/test/resources/rest/transform/match/match_original.yml diff --git a/buildSrc/src/test/resources/rest/transform/match/match_transformed.yml b/build-tools-internal/src/test/resources/rest/transform/match/match_transformed.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/match/match_transformed.yml rename to build-tools-internal/src/test/resources/rest/transform/match/match_transformed.yml diff --git a/buildSrc/src/test/resources/rest/transform/text/text_replace_original.yml b/build-tools-internal/src/test/resources/rest/transform/text/text_replace_original.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/text/text_replace_original.yml rename to build-tools-internal/src/test/resources/rest/transform/text/text_replace_original.yml diff --git a/buildSrc/src/test/resources/rest/transform/text/text_replace_transformed.yml b/build-tools-internal/src/test/resources/rest/transform/text/text_replace_transformed.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/text/text_replace_transformed.yml rename to build-tools-internal/src/test/resources/rest/transform/text/text_replace_transformed.yml diff --git a/buildSrc/src/test/resources/rest/transform/warnings/with_existing_allowed_warnings.yml b/build-tools-internal/src/test/resources/rest/transform/warnings/with_existing_allowed_warnings.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/warnings/with_existing_allowed_warnings.yml rename to build-tools-internal/src/test/resources/rest/transform/warnings/with_existing_allowed_warnings.yml diff --git a/buildSrc/src/test/resources/rest/transform/warnings/with_existing_single_warnings.yml b/build-tools-internal/src/test/resources/rest/transform/warnings/with_existing_single_warnings.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/warnings/with_existing_single_warnings.yml rename to build-tools-internal/src/test/resources/rest/transform/warnings/with_existing_single_warnings.yml diff --git a/buildSrc/src/test/resources/rest/transform/warnings/with_existing_warnings.yml b/build-tools-internal/src/test/resources/rest/transform/warnings/with_existing_warnings.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/warnings/with_existing_warnings.yml rename to build-tools-internal/src/test/resources/rest/transform/warnings/with_existing_warnings.yml diff --git a/buildSrc/src/test/resources/rest/transform/warnings/without_existing_warnings.yml b/build-tools-internal/src/test/resources/rest/transform/warnings/without_existing_warnings.yml similarity index 100% rename from buildSrc/src/test/resources/rest/transform/warnings/without_existing_warnings.yml rename to build-tools-internal/src/test/resources/rest/transform/warnings/without_existing_warnings.yml diff --git a/buildSrc/src/testKit/elasticsearch-build-resources/build.gradle b/build-tools-internal/src/testKit/elasticsearch-build-resources/build.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch-build-resources/build.gradle rename to build-tools-internal/src/testKit/elasticsearch-build-resources/build.gradle diff --git a/buildSrc/src/testKit/elasticsearch-build-resources/gradle.properties b/build-tools-internal/src/testKit/elasticsearch-build-resources/gradle.properties similarity index 100% rename from buildSrc/src/testKit/elasticsearch-build-resources/gradle.properties rename to build-tools-internal/src/testKit/elasticsearch-build-resources/gradle.properties diff --git a/buildSrc/src/testKit/elasticsearch-build-resources/settings.gradle b/build-tools-internal/src/testKit/elasticsearch-build-resources/settings.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch-build-resources/settings.gradle rename to build-tools-internal/src/testKit/elasticsearch-build-resources/settings.gradle diff --git a/buildSrc/src/testKit/elasticsearch.build/LICENSE b/build-tools-internal/src/testKit/elasticsearch.build/LICENSE similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/LICENSE rename to build-tools-internal/src/testKit/elasticsearch.build/LICENSE diff --git a/buildSrc/src/testKit/elasticsearch.build/NOTICE b/build-tools-internal/src/testKit/elasticsearch.build/NOTICE similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/NOTICE rename to build-tools-internal/src/testKit/elasticsearch.build/NOTICE diff --git a/buildSrc/src/testKit/elasticsearch.build/build.gradle b/build-tools-internal/src/testKit/elasticsearch.build/build.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/build.gradle rename to build-tools-internal/src/testKit/elasticsearch.build/build.gradle diff --git a/buildSrc/src/testKit/elasticsearch.build/gradle.properties b/build-tools-internal/src/testKit/elasticsearch.build/gradle.properties similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/gradle.properties rename to build-tools-internal/src/testKit/elasticsearch.build/gradle.properties diff --git a/buildSrc/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle b/build-tools-internal/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle rename to build-tools-internal/src/testKit/elasticsearch.build/libs/elasticsearch-core/build.gradle diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 b/build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-1.3.jar.sha1 diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt b/build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-LICENSE.txt diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt b/build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/hamcrest-core-NOTICE.txt diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 b/build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-4.12.jar.sha1 diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt b/build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-LICENSE.txt diff --git a/buildSrc/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt b/build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt rename to build-tools-internal/src/testKit/elasticsearch.build/licenses/junit-NOTICE.txt diff --git a/buildSrc/src/testKit/elasticsearch.build/settings.gradle b/build-tools-internal/src/testKit/elasticsearch.build/settings.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/settings.gradle rename to build-tools-internal/src/testKit/elasticsearch.build/settings.gradle diff --git a/buildSrc/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java b/build-tools-internal/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java rename to build-tools-internal/src/testKit/elasticsearch.build/src/main/java/org/elasticsearch/SampleClass.java diff --git a/buildSrc/src/testKit/elasticsearch.build/test/logger-usage/build.gradle b/build-tools-internal/src/testKit/elasticsearch.build/test/logger-usage/build.gradle similarity index 100% rename from buildSrc/src/testKit/elasticsearch.build/test/logger-usage/build.gradle rename to build-tools-internal/src/testKit/elasticsearch.build/test/logger-usage/build.gradle diff --git a/buildSrc/src/testKit/reaper/build.gradle b/build-tools-internal/src/testKit/reaper/build.gradle similarity index 100% rename from buildSrc/src/testKit/reaper/build.gradle rename to build-tools-internal/src/testKit/reaper/build.gradle diff --git a/buildSrc/src/testKit/reaper/gradle.properties b/build-tools-internal/src/testKit/reaper/gradle.properties similarity index 100% rename from buildSrc/src/testKit/reaper/gradle.properties rename to build-tools-internal/src/testKit/reaper/gradle.properties diff --git a/buildSrc/src/testKit/reaper/settings.gradle b/build-tools-internal/src/testKit/reaper/settings.gradle similarity index 100% rename from buildSrc/src/testKit/reaper/settings.gradle rename to build-tools-internal/src/testKit/reaper/settings.gradle diff --git a/buildSrc/src/testKit/symbolic-link-preserving-tar/build.gradle b/build-tools-internal/src/testKit/symbolic-link-preserving-tar/build.gradle similarity index 100% rename from buildSrc/src/testKit/symbolic-link-preserving-tar/build.gradle rename to build-tools-internal/src/testKit/symbolic-link-preserving-tar/build.gradle diff --git a/buildSrc/src/testKit/symbolic-link-preserving-tar/settings.gradle b/build-tools-internal/src/testKit/symbolic-link-preserving-tar/settings.gradle similarity index 100% rename from buildSrc/src/testKit/symbolic-link-preserving-tar/settings.gradle rename to build-tools-internal/src/testKit/symbolic-link-preserving-tar/settings.gradle diff --git a/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/build.gradle b/build-tools-internal/src/testKit/testingConventions/build.gradle similarity index 100% rename from buildSrc/src/testKit/testingConventions/build.gradle rename to build-tools-internal/src/testKit/testingConventions/build.gradle diff --git a/buildSrc/src/testKit/testingConventions/empty_test_task/.gitignore b/build-tools-internal/src/testKit/testingConventions/empty_test_task/.gitignore similarity index 100% rename from buildSrc/src/testKit/testingConventions/empty_test_task/.gitignore rename to build-tools-internal/src/testKit/testingConventions/empty_test_task/.gitignore diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/LooksLikeTestsButAbstract.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java b/build-tools-internal/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java rename to build-tools-internal/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/elasticsearch/gradle/testkit/NastyInnerClasses.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/AbstractIT.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchIT.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionMissmatchTests.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java b/build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java rename to build-tools-internal/src/testKit/testingConventions/not_implementing_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java diff --git a/buildSrc/src/testKit/testingConventions/settings.gradle b/build-tools-internal/src/testKit/testingConventions/settings.gradle similarity index 100% rename from buildSrc/src/testKit/testingConventions/settings.gradle rename to build-tools-internal/src/testKit/testingConventions/settings.gradle diff --git a/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/tests_in_main/src/main/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Integration.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionIT.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/NamingConventionTests.java diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java b/build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java similarity index 100% rename from buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java rename to build-tools-internal/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/elasticsearch/gradle/testkit/Unit.java diff --git a/buildSrc/src/testKit/thirdPartyAudit/build.gradle b/build-tools-internal/src/testKit/thirdPartyAudit/build.gradle similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/build.gradle rename to build-tools-internal/src/testKit/thirdPartyAudit/build.gradle diff --git a/buildSrc/src/testKit/thirdPartyAudit/gradle.properties b/build-tools-internal/src/testKit/thirdPartyAudit/gradle.properties similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/gradle.properties rename to build-tools-internal/src/testKit/thirdPartyAudit/gradle.properties diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/build.gradle b/build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/build.gradle similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/sample_jars/build.gradle rename to build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/build.gradle diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java b/build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java rename to build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java b/build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java rename to build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java b/build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java rename to build-tools-internal/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java diff --git a/buildSrc/src/testKit/thirdPartyAudit/settings.gradle b/build-tools-internal/src/testKit/thirdPartyAudit/settings.gradle similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/settings.gradle rename to build-tools-internal/src/testKit/thirdPartyAudit/settings.gradle diff --git a/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt b/build-tools-internal/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt rename to build-tools-internal/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt diff --git a/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-empty.txt b/build-tools-internal/src/testKit/thirdPartyAudit/third-party-audit-empty.txt similarity index 100% rename from buildSrc/src/testKit/thirdPartyAudit/third-party-audit-empty.txt rename to build-tools-internal/src/testKit/thirdPartyAudit/third-party-audit-empty.txt diff --git a/build-tools-internal/version.properties b/build-tools-internal/version.properties new file mode 100644 index 0000000000000..66bb2ce80e408 --- /dev/null +++ b/build-tools-internal/version.properties @@ -0,0 +1,56 @@ +elasticsearch = 8.0.0 +lucene = 8.9.0-snapshot-efdc43fee18 + +bundled_jdk_vendor = adoptopenjdk +bundled_jdk = 16.0.1+9 + +checkstyle = 8.42 + +# optional dependencies +spatial4j = 0.7 +jts = 1.15.0 +jackson = 2.12.2 +snakeyaml = 1.27 +icu4j = 62.1 +supercsv = 2.4.0 +# when updating log4j, please update also docs/java-api/index.asciidoc +log4j = 2.11.1 +slf4j = 1.6.2 +ecsLogging = 0.1.3 + +# when updating the JNA version, also update the version in buildSrc/build.gradle +jna = 5.7.0-1 + +netty = 4.1.63.Final +joda = 2.10.10 + +commons_lang3 = 3.9 + +# when updating this version, you need to ensure compatibility with: +# - plugins/ingest-attachment (transitive dependency, check the upstream POM) +# - distribution/tools/plugin-cli +# - x-pack/plugin/security +bouncycastle=1.64 +# test dependencies +randomizedrunner = 2.7.7 +junit = 4.12 +junit5 = 5.7.1 +httpclient = 4.5.10 +httpcore = 4.4.12 +httpasyncclient = 4.1.4 +commonslogging = 1.1.3 +commonscodec = 1.11 +hamcrest = 2.1 +securemock = 1.2 +mocksocket = 1.2 + +# benchmark dependencies +jmh = 1.26 + +# test dependencies +# when updating this version, also update :qa:evil-tests +jimfs = 1.2 +jimfs_guava = 30.1-jre + +# test framework +networknt_json_schema_validator = 1.0.48 diff --git a/build-tools/build.gradle b/build-tools/build.gradle new file mode 100644 index 0000000000000..233685d038673 --- /dev/null +++ b/build-tools/build.gradle @@ -0,0 +1,218 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import org.elasticsearch.gradle.internal.conventions.VersionPropertiesLoader + +plugins { + id 'java-gradle-plugin' + id 'groovy' + id 'java-test-fixtures' + id 'elasticsearch.publish' + id 'elasticsearch.internal-licenseheaders' + id 'elasticsearch.basic-build-tool-conventions' +} + +description = "The elasticsearch build tools" + +// we update the version property to reflect if we are building a snapshot or a release build +// we write this back out below to load it in the Build.java which will be shown in rest main action +// to indicate this being a snapshot build or a release build. +Properties props = VersionPropertiesLoader.loadBuildSrcVersion(project.file('../build-tools-internal/version.properties')) +def minRuntimeJava = JavaVersion.toVersion(file('../build-tools-internal/src/main/resources/minimumRuntimeVersion').text) + +allprojects { + group = "org.elasticsearch" + version = props.getProperty("elasticsearch") + + apply plugin: 'java' + targetCompatibility = minRuntimeJava + sourceCompatibility = minRuntimeJava +} + +gradlePlugin { + // We already configure publication and we don't need or want the one that comes + // with the java-gradle-plugin + automatedPublishing = false + plugins { + distributionDownload { + id = 'elasticsearch.distribution-download' + implementationClass = 'org.elasticsearch.gradle.DistributionDownloadPlugin' + } + esPlugin { + id = 'elasticsearch.esplugin' + implementationClass = 'org.elasticsearch.gradle.plugin.PluginBuildPlugin' + } + testclusters { + id = 'elasticsearch.testclusters' + implementationClass = 'org.elasticsearch.gradle.testclusters.TestClustersPlugin' + } + reaper { + id = 'elasticsearch.reaper' + implementationClass = 'org.elasticsearch.gradle.ReaperPlugin' + } + } +} + +def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) { + outputFile = "${buildDir}/version.properties" + comment = 'Generated version properties' + properties(props) +} + +tasks.named("processResources").configure { + from(generateVersionProperties) + exclude 'buildSrc.marker' + into('META-INF') { + from configurations.reaper + } +} + +sourceSets { + integTest { + compileClasspath += sourceSets["main"].output + configurations["testRuntimeClasspath"] + runtimeClasspath += output + compileClasspath + } +} + +// we do not publish the test fixtures of build-tools +components.java.withVariantsFromConfiguration(configurations.testFixturesApiElements) { skip() } +components.java.withVariantsFromConfiguration(configurations.testFixturesRuntimeElements) { skip() } + +publishing.publications.named("elastic").configure { + suppressPomMetadataWarningsFor("testFixturesApiElements") + suppressPomMetadataWarningsFor("testFixturesRuntimeElements") +} + +configurations { + integTestImplementation.extendsFrom(testFixturesApi) + integTestRuntimeOnly.extendsFrom(testRuntimeOnly) + register("reaper") +} + +repositories { + mavenCentral() + gradlePluginPortal() +} + +dependencies { + reaper project('reaper') + + api localGroovy() + api gradleApi() + api 'org.apache.commons:commons-compress:1.19' + api 'org.apache.ant:ant:1.10.8' + api 'commons-io:commons-io:2.2' + api 'gradle.plugin.com.github.jengelman.gradle.plugins:shadow:7.0.0' + + runtimeOnly project(":reaper") + + testFixturesApi "junit:junit:${props.getProperty('junit')}" + testFixturesApi "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${props.getProperty('randomizedrunner')}" + testFixturesApi gradleApi() + testFixturesApi gradleTestKit() + testFixturesApi 'com.github.tomakehurst:wiremock-jre8-standalone:2.23.2' + testFixturesApi platform("org.spockframework:spock-bom:2.0-M5-groovy-3.0") + testFixturesApi("org.spockframework:spock-core") { + exclude module: "groovy" + } + + integTestImplementation("org.spockframework:spock-junit4") { + because 'required as we rely on junit4 rules' + } + + integTestImplementation(platform("org.junit:junit-bom:${props.getProperty('junit5')}")) + integTestImplementation("org.junit.jupiter:junit-jupiter") { + because 'allows to write and run Jupiter tests' + } + integTestRuntimeOnly("org.junit.vintage:junit-vintage-engine") { + because 'allows JUnit 3 and JUnit 4 tests to run' + } + + integTestRuntimeOnly("org.junit.platform:junit-platform-launcher") { + because 'allows tests to run from IDEs that bundle older version of launcher' + } +} + +tasks.register("integTest", Test) { + inputs.dir(file("src/testKit")).withPropertyName("testkit dir").withPathSensitivity(PathSensitivity.RELATIVE) + systemProperty 'test.version_under_test', version + testClassesDirs = sourceSets.integTest.output.classesDirs + classpath = sourceSets.integTest.runtimeClasspath + useJUnitPlatform() +} + +normalization { + runtimeClasspath { + // We already include the reaper jar as part of our runtime classpath. Ignore the copy in META-INF. + ignore('META-INF/reaper.jar') + } +} + +tasks.named("check").configure { dependsOn("integTest") } + +// TODO These additional conventions will be applied once those plugins have been ported to build-conventions and +// +// apply plugin: 'elasticsearch.build' +// +// // groovydoc succeeds, but has some weird internal exception... +// tasks.named("groovydoc").configure { +// enabled = false +// } +// +// // build-tools is not ready for primetime with these... +// tasks.named("dependencyLicenses").configure { enabled = false } +// tasks.named("dependenciesInfo").configure {enabled = false } +// tasks.named("dependenciesGraph").configure {enabled = false } +// disableTasks('forbiddenApisMain', 'forbiddenApisTest', 'forbiddenApisIntegTest', 'forbiddenApisTestFixtures') +// tasks.named("jarHell").configure { +// enabled = false +// } +// tasks.named("thirdPartyAudit").configure { +// enabled = false +// } +// configurations.register("distribution") +// +// +// tasks.withType(Test).configureEach { +// // Track reaper jar as a test input using runtime classpath normalization strategy +// inputs.files(configurations.reaper).withNormalizer(ClasspathNormalizer) +// useJUnitPlatform() +// } +// +// tasks.named("test").configure { +// include("**/*TestSpec.class") +// } +// + +// +// tasks.named("forbiddenPatterns").configure { +// exclude '**/*.wav' +// exclude '**/*.p12' +// exclude '**/*.jks' +// exclude '**/*.crt' +// // the file that actually defines nocommit +// exclude '**/ForbiddenPatternsTask.java' +// exclude '**/*.bcfks' +// } +// +// eclipse { +// classpath { +// plusConfigurations += [configurations.integTestRuntimeClasspath] +// } +// } +// +// tasks.named("testingConventions") { +// naming.clear() +// naming { +// Tests { +// baseClass 'org.elasticsearch.gradle.internal.test.GradleUnitTestCase' +// } +// TestSpec { +// baseClass 'spock.lang.Specification' +// } +// } +// } \ No newline at end of file diff --git a/buildSrc/reaper/build.gradle b/build-tools/reaper/build.gradle similarity index 86% rename from buildSrc/reaper/build.gradle rename to build-tools/reaper/build.gradle index aa965930dcd9d..47f6d36cce2aa 100644 --- a/buildSrc/reaper/build.gradle +++ b/build-tools/reaper/build.gradle @@ -1,3 +1,7 @@ +plugins { + id 'java' +} + tasks.named("jar").configure { archiveFileName = "${project.name}.jar" manifest { diff --git a/buildSrc/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java b/build-tools/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java similarity index 100% rename from buildSrc/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java rename to build-tools/reaper/src/main/java/org/elasticsearch/gradle/reaper/Reaper.java diff --git a/build-tools/settings.gradle b/build-tools/settings.gradle new file mode 100644 index 0000000000000..57da388264179 --- /dev/null +++ b/build-tools/settings.gradle @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +include 'reaper' \ No newline at end of file diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy rename to build-tools/src/integTest/groovy/org/elasticsearch/gradle/DistributionDownloadPluginFuncTest.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy rename to build-tools/src/integTest/groovy/org/elasticsearch/gradle/TestClustersPluginFuncTest.groovy diff --git a/build-tools/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java b/build-tools/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java new file mode 100644 index 0000000000000..1ca241bc01aa8 --- /dev/null +++ b/build-tools/src/integTest/java/org/elasticsearch/gradle/ReaperPluginIT.java @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +package org.elasticsearch.gradle; + +import org.elasticsearch.gradle.internal.test.GradleIntegrationTestCase; +import org.gradle.testkit.runner.BuildResult; + +public class ReaperPluginIT extends GradleIntegrationTestCase { + @Override + public String projectName() { + return "reaper"; + } + + public void testCanLaunchReaper() { + BuildResult result = getGradleRunner().withArguments(":launchReaper", "-S", "--info").build(); + assertTaskSuccessful(result, ":launchReaper"); + assertOutputContains(result.getOutput(), "Copying reaper.jar..."); + } + +} diff --git a/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6b1f5d4fc37a5478137bd61dc425644797f3b4b1 GIT binary patch literal 1236 zcmV;_1S|U=iwFRve{5g?1MOLDZ`(Ey?q~lBw%#yc^^0W5*5JV(y1XqNyaY*BWS;^? zI@xR`Q6Q<<-mw3^JIaxh)N!)L@X$?%Abh_&-gD1|b|B%}h)@Gp;k4~`dL6I(YRlp{ zPSEc&+YZXs>G@^56y|z?8w9@RyDoEF-}k&%tiNqX)=8laSLlj@3^wh(b9@gD?z{Ehhcdp)Pde;2Y2|4?SJm~1Zvo`t{fc%Bmkeb*=a2Z3MX zzYAH1e*2ordK?C7T!Eew~|+n1^KC(GX4_GoYpc*dAq54+vjY}Q%Qs}suZq!1Bw zA?x0wTvtI1n0p~~!$M)lbjfC$eCR5Mf&)u2F1*sP&3D7D@k@Rr&kF9V?;L5 z+sdtXNmA)#*O15=UQtkng%o?n5euY@Mnn}vbOP=>(qa2D`wr6)vkDZO2{WZ2rL4#j z(BvmuVEz^vD!|Hu$vT^IW9LYBBvHwh5N@)gy$AgMq3wFZ_T}a9?Qa_PWEPIO`gA@6 z$dC3`i+khqW19(dqmwW!a-M~YL&a?jMnV69p0(RgvSd*@;i4OR_uOa_vkDD%t%bn| zWtw6>*>uWaj-8ogiO4`(J{Nh!4cOHi3>yJ~KR9d+0RIjO5yEJ&#^J1 z;$&g0iWsKIFx%6Q`(mgt^3@W1B#TIn^>CcUdB_&X6|i{UN@U zM>N%)>MPuEm5b=xyn{2h)WhzC*xbIv-f$9r-}n8Pk#O%RPVn* z-=p`RJLuJ)|8^qH*A{L)Z9q7cY(4Buhf3rISq5Q&w0~WHI{dH5v-tl)8&C7Uzx@A? y+xG_a{cjNTdo}-eA$RzXR&D=aQvlmN?eUZKhJ`@xz-UvRFK9u^T1QZNHHLX^P1?fYPYQ;Ad z!H0VJ&up^Ern%H+i5B-ycF)W?=f9l)`@erD8=_&`QDvK8Di=Z`AK{~6UxP&ughVWc zyfI!Kg@{xgX9S7SgqTQ3QAre$AWBj+>O-+c2eO#Bwu32zLWx0^+XveeWtsJvbJWKB zM93oekEupOYv8W&k0)aA4*16+5uu6yTF7Gf%ch~I`NoyNKfzy$2n_#(AT{w{3t0?* zO&wc%{!2nMD#QgT?%^-SV@>?mLYBhcHg&=uh0HWSARlo_S`vRzloE6JixS`;k4K^Z z3ypBTlKju{9~x+F>-2SWboe$Ndu4e3%6ea$FVmat3iTgMhyVQC=WB({?Hz2XWkuyq zc-53MT?hNqy(3vZlm0a`{l!xQA^ysSfzY1I(_eltEL@G=_@43yGQs}L758kL|Bauv z{kZMX!oK%!Zaw|`)`=e~AC|{|p+D1gp8LSzUEij__+xeM+ZVXs1g{aO;BKgHo0r-9 z{@=`Nk8>P1&OOg_yE&!EZQ0Hp;^JxUx$mQG)NZfCR3fT@={m=>ze&sb-jT51W9=38KyogdhyIt!C` z=6Pt~0gf%T!p}!AzP@hdB5caPCd)kk9WCm-X*sHC*sJrgLjR8@ghc)GUqlciQnUZB zg#-fVz@ZGPLhe$`;P(3is}wMR`ZGg=!`ZHb*`(*8K(K{u^(E2>1sKI zwGyt_$R-YQ3Iyq@fv}N7Ixg2-GY#e)Ii|PA#yUYotht0oX_F#S#=51EAX^7JY&+ZL zMGaFD>U$!{7LqgGL!-Ja4zToH@v#LOVx=9IA4Y<^+AbAc~nMr>D!8s5m79}?Lw!K5E zhU%zTtLDp8;QS8URROfHOgydfLM_O)s=NBqT7H%@G0%oF3=Ju=-m*og!+>#ABX2jV zwz@Q}W)qDO%`CwYRaRj#%RRz?1yIHYL@CKJ4N@Nnk9thw5hzEfDne07bqXv=I&uw- z*ep&|f%TXqzi{hk6wv@B@C^49NLbYZ`;byP zw_WkH5A+OxN-g@(B3W3ty!7EjDOAe=J4kJ!PaFn%&>|TkREA@vBC*=qoUtc?AT@)t zJEMY^GuFHuqFW}#w1RRfh4M3L#UJW9ii?<6P2SNhm`?3F);n?}n;GiqA3pABdbG>A zx@9wt=i#%BveeVe+9Whj&6GVrkU~wpnjkP=-Kt7~@9EI`{LvZ_?7;W&gE5KoaH3j=Lf z^PBU&9}&ZLX|)RG+>x?sJ6@HrSTQiwRTNcLSv6I=4~t?ph#|0>f?C3NbpJhn{x9|YZ~go@ zso0R`Wgn21mKDGMiPxV0;;|@u{uASo=HLHoB7q$q+;+iFiHBl>1-)26K(nnE)gJ0A{~U7ytkO literal 0 HcmV?d00001 diff --git a/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c86378d8f9b03a9c714c6ee4a28acf1755fd2313 GIT binary patch literal 1174 zcmV;H1Zn#piwFQ5$3I^H1MOFBZ`(Ey?q~lBw%#yc^^0Un_Ta%Ey1XqNJO@cuWS;_t zKFMq)Q6MS5Y}kL_9p%V%=A>EUWh>@G5K`pv?s(5VX9*H+tP}>g7SpER>a@D;7dsZu z^ZH@P+}JBeuM?ExN|@j6`~7~<4Sb(@eh_rKFIc$iK(}$$vz@gZ%e)bH#_{ ze~y2>&fdNou@dq^bAr28t3OfD06QI>jn6ON{CqiZ9;U!^X5??M3*%(}S5+`GRYfvk zJel*QVFoO-Q(&pg7|$jw<%`NSognYbDyL(33T(!c0$S`?X$A|P<_R=tAMKDjskx|e zDPSi*G-zY6^4`2kO%ShU3pb;O3&1nh=4Q}t&*$^jie4?D+HoN#(1xtNLAkbu2(b19 zv_+wDV%y}iNwK!3HciNCgaM{X1Ctp}(-I`-@QInM)fwJ{X~;Dg^ljXwWhSlUNtrJd z;r%T>l>p{kfIGFgdkV8H(;~h9RE=`x$22T(*h!HcEppJ7fUz=*&8}+eO_EeL*$pIW zj#rdaVS;kcIAVd6F^H&!37vq=Kw9ijW#3>qVpV}=b7`lPq?8p|0*2ybORV1_Lj%}Z zuvq6)ZrvK$o+vc3BZTYhXAGB_V6b>Qbpg~l7+k5 z_g~HrnpFi46I>&wyE;pzDw?xdsLq)2l^9FOt0O;hUldIJj%s7+$? zOq6hdut=-4Oc0tcRUR3`%8{u> z6iFeen#%4&QQQV`hIWToOZ+ju351AKF9QmfB?|itS#!}J%LInB)SjAaRJhLNY`{k4G|Gnz{uNQXd{m<{w_y7L=@1K|Y zO9!`^)<8@Z+YUQ3Ld)DD%Rm%J`4!0-QlKkV%J o{~YoW|B>9xHGx+f;QxjEulDTU%U<@fmoH!b1Qy=ydH@~(0D~A^)&Kwi literal 0 HcmV?d00001 diff --git a/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip new file mode 100644 index 0000000000000000000000000000000000000000..42b572e37f3fbfbb90dee93ecbff745d37988879 GIT binary patch literal 568 zcmWIWW@h1H00E1zJ$_&Yln`N%VMxtMEH24RE>2A>O3u(V)HBjE)(;KgWMJM?@;2u7 zG^W_n3T_5QmamKq3@jo*eF1ROtk6u8z+qZaW*)@E1EiX$ipNA0cY_@aGJYa92QxCs zG2;pV320CVFuZjHF;R?#2L~%8I52_&VKQc5Ae#&db!;X>f(B?h$n7MUuF3#2oq=IV e;{rUUqu3f6g3BsaHlP^{%s{9NjOhO$4g&zPL2_UK literal 0 HcmV?d00001 diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java b/build-tools/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java rename to build-tools/src/main/java/org/elasticsearch/gradle/AbstractLazyPropertyCollection.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/Architecture.java b/build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/Architecture.java rename to build-tools/src/main/java/org/elasticsearch/gradle/Architecture.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDependency.java b/build-tools/src/main/java/org/elasticsearch/gradle/DistributionDependency.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDependency.java rename to build-tools/src/main/java/org/elasticsearch/gradle/DistributionDependency.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/DistributionDownloadPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/DistributionResolution.java b/build-tools/src/main/java/org/elasticsearch/gradle/DistributionResolution.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/DistributionResolution.java rename to build-tools/src/main/java/org/elasticsearch/gradle/DistributionResolution.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java b/build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java rename to build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistribution.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java b/build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java rename to build-tools/src/main/java/org/elasticsearch/gradle/ElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/FileSupplier.java b/build-tools/src/main/java/org/elasticsearch/gradle/FileSupplier.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/FileSupplier.java rename to build-tools/src/main/java/org/elasticsearch/gradle/FileSupplier.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java b/build-tools/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java rename to build-tools/src/main/java/org/elasticsearch/gradle/FileSystemOperationsAware.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java b/build-tools/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java rename to build-tools/src/main/java/org/elasticsearch/gradle/LazyFileOutputStream.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java b/build-tools/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java rename to build-tools/src/main/java/org/elasticsearch/gradle/LazyPropertyList.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java b/build-tools/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java rename to build-tools/src/main/java/org/elasticsearch/gradle/LazyPropertyMap.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/LoggedExec.java b/build-tools/src/main/java/org/elasticsearch/gradle/LoggedExec.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/LoggedExec.java rename to build-tools/src/main/java/org/elasticsearch/gradle/LoggedExec.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/OS.java b/build-tools/src/main/java/org/elasticsearch/gradle/OS.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/OS.java rename to build-tools/src/main/java/org/elasticsearch/gradle/OS.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java b/build-tools/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java rename to build-tools/src/main/java/org/elasticsearch/gradle/PropertyNormalization.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java similarity index 92% rename from buildSrc/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java index 7a81284a26542..a76a79feba0cf 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/ReaperPlugin.java @@ -20,11 +20,14 @@ */ public class ReaperPlugin implements Plugin { + /** + * The unique identifier to register the reaper shared service within a gradle build + * */ public static final String REAPER_SERVICE_NAME = "reaper"; private final ProjectLayout projectLayout; @Inject - public ReaperPlugin(ProjectLayout projectLayout) { + ReaperPlugin(ProjectLayout projectLayout) { this.projectLayout = projectLayout; } diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/ReaperService.java b/build-tools/src/main/java/org/elasticsearch/gradle/ReaperService.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/ReaperService.java rename to build-tools/src/main/java/org/elasticsearch/gradle/ReaperService.java index ece27cef7b66f..da65583818e3b 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/ReaperService.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/ReaperService.java @@ -149,6 +149,7 @@ private Path locateReaperJar() { OutputStream out = Files.newOutputStream(jarPath); InputStream jarInput = this.getClass().getResourceAsStream("/META-INF/reaper.jar"); ) { + System.out.println("jarInput = " + jarInput); logger.info("Copying reaper.jar..."); jarInput.transferTo(out); } catch (IOException e) { diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/Version.java b/build-tools/src/main/java/org/elasticsearch/gradle/Version.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/Version.java rename to build-tools/src/main/java/org/elasticsearch/gradle/Version.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/VersionProperties.java b/build-tools/src/main/java/org/elasticsearch/gradle/VersionProperties.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/VersionProperties.java rename to build-tools/src/main/java/org/elasticsearch/gradle/VersionProperties.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/dependencies/CompileOnlyResolvePlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/dependencies/CompileOnlyResolvePlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/dependencies/CompileOnlyResolvePlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/dependencies/CompileOnlyResolvePlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java b/build-tools/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java rename to build-tools/src/main/java/org/elasticsearch/gradle/distribution/ArchiveElasticsearchDistributionType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/distribution/ElasticsearchDistributionTypes.java b/build-tools/src/main/java/org/elasticsearch/gradle/distribution/ElasticsearchDistributionTypes.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/distribution/ElasticsearchDistributionTypes.java rename to build-tools/src/main/java/org/elasticsearch/gradle/distribution/ElasticsearchDistributionTypes.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/distribution/IntegTestZipElasticsearchDistributionType.java b/build-tools/src/main/java/org/elasticsearch/gradle/distribution/IntegTestZipElasticsearchDistributionType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/distribution/IntegTestZipElasticsearchDistributionType.java rename to build-tools/src/main/java/org/elasticsearch/gradle/distribution/IntegTestZipElasticsearchDistributionType.java diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellPlugin.java new file mode 100644 index 0000000000000..4528e0dbaaf93 --- /dev/null +++ b/build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellPlugin.java @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.jarhell; + +import org.elasticsearch.gradle.util.GradleUtils; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.Task; +import org.gradle.api.artifacts.Configuration; +import org.gradle.api.tasks.SourceSet; +import org.gradle.api.tasks.TaskProvider; +import org.gradle.language.base.plugins.LifecycleBasePlugin; + +public class JarHellPlugin implements Plugin { + + @Override + public void apply(Project project) { + TaskProvider jarHellTask = createTask(project); + project.getPluginManager().withPlugin( + "lifecycle-base", + p -> project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(jarHellTask)) + ); + } + + private TaskProvider createTask(Project project) { + Configuration jarHellConfig = project.getConfigurations().create("jarHell"); + TaskProvider jarHell = project.getTasks().register("jarHell", JarHellTask.class); + jarHell.configure(t -> { + SourceSet testSourceSet = getJavaTestSourceSet(project); + t.setClasspath(testSourceSet.getRuntimeClasspath()); + t.setJarHellRuntimeClasspath(jarHellConfig); + }); + + return jarHell; + } + + /** + * @param project The project to look for test Java resources. + */ + private static SourceSet getJavaTestSourceSet(Project project) { + return GradleUtils.getJavaSourceSets(project).findByName(SourceSet.TEST_SOURCE_SET_NAME); + } + +} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellTask.java similarity index 69% rename from buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellTask.java rename to build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellTask.java index c68bda1822f43..cfafab8cd03b3 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellTask.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/jarhell/JarHellTask.java @@ -6,42 +6,61 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.precommit; +package org.elasticsearch.gradle.jarhell; import org.elasticsearch.gradle.LoggedExec; +import org.gradle.api.DefaultTask; import org.gradle.api.file.FileCollection; +import org.gradle.api.file.ProjectLayout; import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Classpath; import org.gradle.api.tasks.CompileClasspath; +import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; import org.gradle.process.ExecOperations; import javax.inject.Inject; import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; /** * Runs CheckJarHell on a classpath. */ @CacheableTask -public class JarHellTask extends PrecommitTask { +public class JarHellTask extends DefaultTask { private FileCollection jarHellRuntimeClasspath; private FileCollection classpath; private ExecOperations execOperations; + private ProjectLayout projectLayout; + @Inject - public JarHellTask(ExecOperations execOperations) { + public JarHellTask(ExecOperations execOperations, ProjectLayout projectLayout) { this.execOperations = execOperations; + this.projectLayout = projectLayout; setDescription("Runs CheckJarHell on the configured classpath"); } + @OutputFile + public File getSuccessMarker() { + return new File(projectLayout.getBuildDirectory().getAsFile().get(), "markers/" + this.getName()); + } + @TaskAction - public void runJarHellCheck() { + public void runJarHellCheck() throws IOException{ LoggedExec.javaexec(execOperations, spec -> { spec.environment("CLASSPATH", getJarHellRuntimeClasspath().plus(getClasspath()).getAsPath()); spec.setMain("org.elasticsearch.bootstrap.JarHell"); }); + writeMarker(); + } + + private void writeMarker() throws IOException { + Files.write(getSuccessMarker().toPath(), new byte[] {}, StandardOpenOption.CREATE); } // We use compile classpath normalization here because class implementation changes are irrelevant for the purposes of jar hell. diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java similarity index 99% rename from buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java index d3b6a76345ab0..5c367eb339111 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java @@ -15,7 +15,7 @@ import org.elasticsearch.gradle.Version; import org.elasticsearch.gradle.VersionProperties; import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin; -import org.elasticsearch.gradle.precommit.PrecommitTasks; +import org.elasticsearch.gradle.jarhell.JarHellPlugin; import org.elasticsearch.gradle.testclusters.ElasticsearchCluster; import org.elasticsearch.gradle.testclusters.RunTask; import org.elasticsearch.gradle.testclusters.TestClustersPlugin; @@ -55,10 +55,10 @@ public class PluginBuildPlugin implements Plugin { @Override public void apply(final Project project) { - PrecommitTasks.create(project); project.getPluginManager().apply(JavaPlugin.class); project.getPluginManager().apply(TestClustersPlugin.class); project.getPluginManager().apply(CompileOnlyResolvePlugin.class); + project.getPluginManager().apply(JarHellPlugin.class); var extension = project.getExtensions().create(PLUGIN_EXTENSION_NAME, PluginPropertiesExtension.class, project); configureDependencies(project); diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java rename to build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java rename to build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginType.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/DefaultTestClustersTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchCluster.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/RunTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClusterConfiguration.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersAware.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersException.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersPlugin.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersRegistry.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestClustersThrottle.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/TestDistribution.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java rename to build-tools/src/main/java/org/elasticsearch/gradle/testclusters/WaitForHttpResource.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java b/build-tools/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java rename to build-tools/src/main/java/org/elasticsearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java b/build-tools/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java rename to build-tools/src/main/java/org/elasticsearch/gradle/transform/UnpackTransform.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java b/build-tools/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java rename to build-tools/src/main/java/org/elasticsearch/gradle/transform/UnzipTransform.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/FileUtils.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/FileUtils.java similarity index 98% rename from buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/FileUtils.java rename to build-tools/src/main/java/org/elasticsearch/gradle/util/FileUtils.java index b70cbf634de6f..534d28c02c08d 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/internal/util/FileUtils.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/util/FileUtils.java @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -package org.elasticsearch.gradle.internal.util; +package org.elasticsearch.gradle.util; import org.gradle.api.UncheckedIOException; diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java rename to build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/util/Pair.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/Pair.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/util/Pair.java rename to build-tools/src/main/java/org/elasticsearch/gradle/util/Pair.java diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java similarity index 100% rename from buildSrc/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java rename to build-tools/src/main/java/org/elasticsearch/gradle/util/PermissionUtils.java diff --git a/build-tools/src/main/resources/plugin-descriptor.properties b/build-tools/src/main/resources/plugin-descriptor.properties new file mode 100644 index 0000000000000..e313c0f4692d3 --- /dev/null +++ b/build-tools/src/main/resources/plugin-descriptor.properties @@ -0,0 +1,63 @@ +# Elasticsearch plugin descriptor file +# This file must exist as 'plugin-descriptor.properties' inside a plugin. +# +### example plugin for "foo" +# +# foo.zip <-- zip file for the plugin, with this structure: +# |____ .jar <-- classes, resources, dependencies +# |____ .jar <-- any number of jars +# |____ plugin-descriptor.properties <-- example contents below: +# +# classname=foo.bar.BazPlugin +# description=My cool plugin +# version=6.0 +# elasticsearch.version=6.0 +# java.version=1.8 +# +### mandatory elements for all plugins: +# +# 'type': the type of this plugin. 'isolated' indicated a typical sandboxed plugin, +# whereas 'bootstrap' indicates a plugin whose jars are added to the JVM's boot +# classpath. +type=${type} +# +# 'description': simple summary of the plugin +description=${description} +# +# 'version': plugin's version +version=${version} +# +# 'name': the plugin name +name=${name} +<% if (type != "bootstrap") { %> +# +# 'classname': the name of the class to load, fully-qualified. Only applies to +# "isolated" plugins +classname=${classname} +<% } %> +# +# 'java.version': version of java the code is built against +# use the system property java.specification.version +# version string must be a sequence of nonnegative decimal integers +# separated by "."'s and may have leading zeros +java.version=${javaVersion} +# +# 'elasticsearch.version': version of elasticsearch compiled against +elasticsearch.version=${elasticsearchVersion} +### optional elements for plugins: +# +# 'extended.plugins': other plugins this plugin extends through SPI +extended.plugins=${extendedPlugins} +# +# 'has.native.controller': whether or not the plugin has a native controller +has.native.controller=${hasNativeController} +<% if (type == "bootstrap") { %> +# +# 'java.opts': any additional command line parameters to pass to the JVM when +# Elasticsearch starts. Only applies to "bootstrap" plugins. +java.opts=${javaOpts} +<% } %> +<% if (licensed) { %> +# This plugin requires that a license agreement be accepted before installation +licensed=${licensed} +<% } %> diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java new file mode 100644 index 0000000000000..389d18ed6f297 --- /dev/null +++ b/build-tools/src/test/java/org/elasticsearch/gradle/DistributionDownloadPluginTests.java @@ -0,0 +1,170 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle; + +import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; +import org.elasticsearch.gradle.ElasticsearchDistribution.Platform; +import org.elasticsearch.gradle.distribution.ElasticsearchDistributionTypes; +import org.gradle.api.Project; +import org.gradle.testfixtures.ProjectBuilder; +import org.gradle.api.NamedDomainObjectContainer; + +import java.io.File; + +import static org.hamcrest.core.StringContains.containsString; + +public class DistributionDownloadPluginTests extends GradleUnitTestCase { + + protected static Project rootProject; + + public void testVersionDefault() { + ElasticsearchDistribution distro = checkDistro( + createProject(), + "testdistro", + null, + ElasticsearchDistributionTypes.ARCHIVE, + Platform.LINUX, + true + ); + assertEquals(distro.getVersion(), VersionProperties.getElasticsearch()); + } + + public void testBadVersionFormat() { + assertDistroError( + createProject(), + "testdistro", + "badversion", + ElasticsearchDistributionTypes.ARCHIVE, + Platform.LINUX, + true, + "Invalid version format: 'badversion'" + ); + } + + public void testTypeDefault() { + ElasticsearchDistribution distro = checkDistro(createProject(), "testdistro", "5.0.0", null, Platform.LINUX, true); + assertEquals(distro.getType(), ElasticsearchDistributionTypes.ARCHIVE); + } + + public void testPlatformDefault() { + ElasticsearchDistribution distro = checkDistro( + createProject(), + "testdistro", + "5.0.0", + ElasticsearchDistributionTypes.ARCHIVE, + null, + true + ); + assertEquals(distro.getPlatform(), ElasticsearchDistribution.CURRENT_PLATFORM); + } + + public void testPlatformForIntegTest() { + assertDistroError( + createProject(), + "testdistro", + "5.0.0", + ElasticsearchDistributionTypes.INTEG_TEST_ZIP, + Platform.LINUX, + null, + "platform cannot be set on elasticsearch distribution [testdistro]" + ); + } + + public void testBundledJdkDefault() { + ElasticsearchDistribution distro = checkDistro( + createProject(), + "testdistro", + "5.0.0", + ElasticsearchDistributionTypes.ARCHIVE, + Platform.LINUX, + true + ); + assertTrue(distro.getBundledJdk()); + } + + public void testBundledJdkForIntegTest() { + assertDistroError( + createProject(), + "testdistro", + "5.0.0", + ElasticsearchDistributionTypes.INTEG_TEST_ZIP, + null, + true, + "bundledJdk cannot be set on elasticsearch distribution [testdistro]" + ); + } + + private void assertDistroError( + Project project, + String name, + String version, + ElasticsearchDistributionType type, + Platform platform, + Boolean bundledJdk, + String message + ) { + IllegalArgumentException e = expectThrows( + IllegalArgumentException.class, + () -> checkDistro(project, name, version, type, platform, bundledJdk) + ); + assertThat(e.getMessage(), containsString(message)); + } + + // create a distro and finalize its configuration + private ElasticsearchDistribution checkDistro( + Project project, + String name, + String version, + ElasticsearchDistributionType type, + Platform platform, + Boolean bundledJdk + ) { + ElasticsearchDistribution distribution = createDistro(project, name, version, type, platform, bundledJdk); + distribution.finalizeValues(); + return distribution; + } + + + protected ElasticsearchDistribution createDistro( + Project project, + String name, + String version, + ElasticsearchDistributionType type, + ElasticsearchDistribution.Platform platform, + Boolean bundledJdk + ) { + NamedDomainObjectContainer distros = DistributionDownloadPlugin.getContainer(project); + return distros.create(name, distro -> { + if (version != null) { + distro.setVersion(version); + } + if (type != null) { + distro.setType(type); + } + if (platform != null) { + distro.setPlatform(platform); + } + if (bundledJdk != null) { + distro.setBundledJdk(bundledJdk); + } + }).maybeFreeze(); + } + + protected Project createProject() { + rootProject = ProjectBuilder.builder().build(); +// Project distributionProject = ProjectBuilder.builder().withParent(rootProject).withName("distribution").build(); +// archivesProject = ProjectBuilder.builder().withParent(distributionProject).withName("archives").build(); +// packagesProject = ProjectBuilder.builder().withParent(distributionProject).withName("packages").build(); +// bwcProject = ProjectBuilder.builder().withParent(distributionProject).withName("bwc").build(); + Project project = ProjectBuilder.builder().withParent(rootProject).build(); + project.getPlugins().apply("elasticsearch.distribution-download"); + return project; + } + +} diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/VersionTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/VersionTests.java new file mode 100644 index 0000000000000..37aa5cf9d21da --- /dev/null +++ b/build-tools/src/test/java/org/elasticsearch/gradle/VersionTests.java @@ -0,0 +1,115 @@ +package org.elasticsearch.gradle; + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; +import org.junit.Rule; +import org.junit.rules.ExpectedException; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +public class VersionTests extends GradleUnitTestCase { + + @Rule + public ExpectedException expectedEx = ExpectedException.none(); + + public void testVersionParsing() { + assertVersionEquals("7.0.1", 7, 0, 1); + assertVersionEquals("7.0.1-alpha2", 7, 0, 1); + assertVersionEquals("5.1.2-rc3", 5, 1, 2); + assertVersionEquals("6.1.2-SNAPSHOT", 6, 1, 2); + assertVersionEquals("6.1.2-beta1-SNAPSHOT", 6, 1, 2); + assertVersionEquals("17.03.11", 17, 3, 11); + } + + public void testRelaxedVersionParsing() { + assertVersionEquals("6.1.2", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("6.1.2-SNAPSHOT", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("6.1.2-beta1-SNAPSHOT", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("6.1.2-foo", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("6.1.2-foo-bar", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("16.01.22", 16, 1, 22, Version.Mode.RELAXED); + } + + public void testCompareWithStringVersions() { + assertTrue("1.10.20 is not interpreted as before 2.0.0", Version.fromString("1.10.20").before("2.0.0")); + assertTrue( + "7.0.0-alpha1 should be equal to 7.0.0-alpha1", + Version.fromString("7.0.0-alpha1").equals(Version.fromString("7.0.0-alpha1")) + ); + assertTrue( + "7.0.0-SNAPSHOT should be equal to 7.0.0-SNAPSHOT", + Version.fromString("7.0.0-SNAPSHOT").equals(Version.fromString("7.0.0-SNAPSHOT")) + ); + } + + public void testCollections() { + assertTrue( + Arrays.asList( + Version.fromString("5.2.0"), + Version.fromString("5.2.1-SNAPSHOT"), + Version.fromString("6.0.0"), + Version.fromString("6.0.1"), + Version.fromString("6.1.0") + ).containsAll(Arrays.asList(Version.fromString("6.0.1"), Version.fromString("5.2.1-SNAPSHOT"))) + ); + Set versions = new HashSet<>(); + versions.addAll( + Arrays.asList( + Version.fromString("5.2.0"), + Version.fromString("5.2.1-SNAPSHOT"), + Version.fromString("6.0.0"), + Version.fromString("6.0.1"), + Version.fromString("6.1.0") + ) + ); + Set subset = new HashSet<>(); + subset.addAll(Arrays.asList(Version.fromString("6.0.1"), Version.fromString("5.2.1-SNAPSHOT"))); + assertTrue(versions.containsAll(subset)); + } + + public void testToString() { + assertEquals("7.0.1", new Version(7, 0, 1).toString()); + } + + public void testCompareVersions() { + assertEquals(0, new Version(7, 0, 0).compareTo(new Version(7, 0, 0))); + assertOrder(Version.fromString("19.0.1"), Version.fromString("20.0.3")); + } + + public void testExceptionEmpty() { + expectedEx.expect(IllegalArgumentException.class); + expectedEx.expectMessage("Invalid version format"); + Version.fromString(""); + } + + public void testExceptionSyntax() { + expectedEx.expect(IllegalArgumentException.class); + expectedEx.expectMessage("Invalid version format"); + Version.fromString("foo.bar.baz"); + } + + private void assertOrder(Version smaller, Version bigger) { + assertEquals(smaller + " should be smaller than " + bigger, -1, smaller.compareTo(bigger)); + } + + private void assertVersionEquals(String stringVersion, int major, int minor, int revision) { + assertVersionEquals(stringVersion, major, minor, revision, Version.Mode.STRICT); + } + + private void assertVersionEquals(String stringVersion, int major, int minor, int revision, Version.Mode mode) { + Version version = Version.fromString(stringVersion, mode); + assertEquals(major, version.getMajor()); + assertEquals(minor, version.getMinor()); + assertEquals(revision, version.getRevision()); + } + +} diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java new file mode 100644 index 0000000000000..cbb3d4eb11836 --- /dev/null +++ b/build-tools/src/test/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtensionTests.java @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.plugin; + +import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; +import org.gradle.api.Project; +import org.gradle.api.plugins.JavaPlugin; +import org.gradle.testfixtures.ProjectBuilder; + +public class PluginPropertiesExtensionTests extends GradleUnitTestCase { + + public void testCreatingPluginPropertiesExtensionWithNameAndVersion() { + String projectName = "Test"; + String projectVersion = "5.0"; + + PluginPropertiesExtension pluginPropertiesExtension = new PluginPropertiesExtension( + this.createProject(projectName, projectVersion) + ); + + assertEquals(projectName, pluginPropertiesExtension.getName()); + assertEquals(projectVersion, pluginPropertiesExtension.getVersion()); + } + + public void testCreatingPluginPropertiesExtensionWithNameWithoutVersion() { + String projectName = "Test"; + + PluginPropertiesExtension pluginPropertiesExtension = new PluginPropertiesExtension(this.createProject(projectName, null)); + + assertEquals(projectName, pluginPropertiesExtension.getName()); + assertEquals("unspecified", pluginPropertiesExtension.getVersion()); + } + + private Project createProject(String projectName, String version) { + Project project = ProjectBuilder.builder().withName(projectName).build(); + project.setVersion(version); + + project.getPlugins().apply(JavaPlugin.class); + + return project; + } +} diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java new file mode 100644 index 0000000000000..a94eca15d1c82 --- /dev/null +++ b/build-tools/src/test/java/org/elasticsearch/gradle/testclusters/WaitForHttpResourceTests.java @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.testclusters; + +import org.elasticsearch.gradle.internal.test.GradleUnitTestCase; + +import java.net.URL; +import java.nio.file.Paths; +import java.security.KeyStore; +import java.security.cert.Certificate; +import java.security.cert.X509Certificate; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.notNullValue; + +public class WaitForHttpResourceTests extends GradleUnitTestCase { + + public void testBuildTrustStoreFromFile() throws Exception { + final WaitForHttpResource http = new WaitForHttpResource(new URL("https://localhost/")); + final URL ca = getClass().getResource("/ca.p12"); + assertThat(ca, notNullValue()); + http.setTrustStoreFile(Paths.get(ca.toURI()).toFile()); + http.setTrustStorePassword("password"); + final KeyStore store = http.buildTrustStore(); + final Certificate certificate = store.getCertificate("ca"); + assertThat(certificate, notNullValue()); + assertThat(certificate, instanceOf(X509Certificate.class)); + assertThat(((X509Certificate) certificate).getSubjectDN().toString(), equalTo("CN=Elastic Certificate Tool Autogenerated CA")); + } + + public void testBuildTrustStoreFromCA() throws Exception { + final WaitForHttpResource http = new WaitForHttpResource(new URL("https://localhost/")); + final URL ca = getClass().getResource("/ca.pem"); + assertThat(ca, notNullValue()); + http.setCertificateAuthorities(Paths.get(ca.toURI()).toFile()); + final KeyStore store = http.buildTrustStore(); + final Certificate certificate = store.getCertificate("cert-0"); + assertThat(certificate, notNullValue()); + assertThat(certificate, instanceOf(X509Certificate.class)); + assertThat(((X509Certificate) certificate).getSubjectDN().toString(), equalTo("CN=Elastic Certificate Tool Autogenerated CA")); + } +} diff --git a/build-tools/src/test/resources/ca.p12 b/build-tools/src/test/resources/ca.p12 new file mode 100644 index 0000000000000000000000000000000000000000..cc44494515b9f415b10e5a1680a351004f36336e GIT binary patch literal 1130 zcmV-w1eN>`YKzq*P z3y>M9*-ScP?1G-yVrojUCy_ALnwg}ca60EThMM9YrH`bM(eT@AOI>a^M^U!^s2%az zrPQgnSOrO6=k;|gH>|m$R5&%)w(cY^zJv(c$#cHvXZYU5thBcru&BI=EIUFjS!R2>kujzOGMgd?)`w3RP8sF^jF`%@< zC2leR<(U!v>Vpdc8?^P?y(?yX7~Q-DK$zzh@9scpmNili{S9kae_0$UviHYUHkwLJ zmB?Aegqu!`e>iOJO$V(GPY3cW;(OU{aEwqk`_=&@JuX^W5mru5m3(VY7Tb;3A6u@` zCbt^A)%YsHuSwmuiPei=Mn}Nol$aR5>2V)0T03^>96pBgXxA=&LN&6=1Od0obZ$LC z9k%l=Yfq)jlH1>WEbj?#x$zugDT5=*d4VxyyaA_dOsL&leFbs~*rNJ?oM0wYZkr&w z6j~LIZ&XQ}1@b|m`}>cHOmLu&P?_lmlG+=S{-s-j%`4*sbZIPyxx&7YF8hH3n-8U( zw9AX*Box9=@bd~T;$T+ore@}|0#G=pwF&V8xg39DzX5|+&qEZDXfEu28LCl=;Ex@x zrafigSLJn#r{=ZBPV>`7Zx~&I7#)yO^EQGV0-p);N$^Vb$s3AC5D4`R$E{QTY@eJg zf<>EFC9d=ndoy%S{?q(;3d%t^IMHcoMyW$GwT5(SvR4$Zcn4QvX{R)AK1Sd(^PrI; zG_*Ji{3HO*z$bB>JOHvq$R%s=Qn9y6iu2C+7u7_TLNNrZog6HzS_KT!KkHE$65maB z-4#<)UeY2()Ai>Rv!54{y;tjU*s1ZNG~ z3#wsfdzy0zT5@hdR#AExpO_Hew~Mc!cZaYpHoW+dT!HPXW4RrM9RS}K&*K`=frAutIB1uG5%0vZJX1QZ{H wm_-g$!e*DmGljOO=GL*I@+JfnfnL+d3d7|K`}9pm4!>XT-tEOT0s{etpmUoKWB>pF literal 0 HcmV?d00001 diff --git a/build-tools/src/test/resources/ca.pem b/build-tools/src/test/resources/ca.pem new file mode 100644 index 0000000000000..8dda1767e4838 --- /dev/null +++ b/build-tools/src/test/resources/ca.pem @@ -0,0 +1,25 @@ +Bag Attributes + friendlyName: ca + localKeyID: 54 69 6D 65 20 31 35 35 33 37 34 33 38 39 30 38 33 35 +subject=/CN=Elastic Certificate Tool Autogenerated CA +issuer=/CN=Elastic Certificate Tool Autogenerated CA +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIVAMQMmDRcXfXLaTp6ep1H8rC3tOrwMA0GCSqGSIb3DQEB +CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu +ZXJhdGVkIENBMB4XDTE5MDMyODAzMzEyNloXDTIyMDMyNzAzMzEyNlowNDEyMDAG +A1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5lcmF0ZWQgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT73N6JZeBPyzahc0aNcra +BpUROVGB9wXQqf8JeU4GtH+1qfqUKYKUJTe/DZWc+5Qz1WAKGZEvBySAlgbuncuq +VpLzWxpEui1vRW8JB3gjZgeY3vfErrEWWr95YM0e8rWu4AoAchzqsrG0/+po2eui +cN+8hI6jRKiBv/ZeQqja6KZ8y4Wt4VaNVL53+I7+eWA/aposu6/piUg2wZ/FNhVK +hypcJwDdp3fQaugtPj3y76303jTRgutgd3rtWFuy3MCDLfs3mSQUjO10s93zwLdC +XokyIywijS5CpO8mEuDRu9rb5J1DzwUpUfk+GMObb6rHjFKzSqnM3s+nasypQQ9L +AgMBAAGjUzBRMB0GA1UdDgQWBBQZEW88R95zSzO2tLseEWgI7ugvLzAfBgNVHSME +GDAWgBQZEW88R95zSzO2tLseEWgI7ugvLzAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBCwUAA4IBAQBEJN0UbL77usVnzIvxKa3GpLBgJQAZtD1ifZppC4w46Bul +1G7Fdc+XMbzZlI4K6cWEdd5dfEssKA8btEtRzdNOqgggBpqrUU0mNlQ+vC22XORU +ykHAu2TsRwoHmuxkd9Et/QyuTFXR4fTiU8rsJuLFOgn+RdEblA0J0gJeIqdWI5Z1 +z13OyZEl6BCQFyrntu2eERxaHEfsJOSBZE4RcecnLNGhIJBXE0Pk4iTiViJF/h7d ++kUUegKx0qewZif2eEZgrz12Vuen9a6bh2i2pNS95vABVVMr8uB+J1BGkNA5YT7J +qtZA2tN//Evng7YDiR+KkB1kvXVZVIi2WPDLD/zu +-----END CERTIFICATE----- diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy similarity index 96% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy rename to build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy index fb73b69ea734c..5d5935b00cc04 100644 --- a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy +++ b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/AbstractGradleFuncTest.groovy @@ -8,6 +8,7 @@ package org.elasticsearch.gradle.fixtures +import org.elasticsearch.gradle.internal.test.InternalAwareGradleRunner import org.gradle.testkit.runner.GradleRunner import org.junit.Rule import org.junit.rules.TemporaryFolder @@ -45,12 +46,12 @@ abstract class AbstractGradleFuncTest extends Specification { } GradleRunner gradleRunner(File projectDir, String... arguments) { - GradleRunner.create() + new InternalAwareGradleRunner(GradleRunner.create() .withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0) .withProjectDir(projectDir) - .withArguments(arguments) .withPluginClasspath() .forwardOutput() + ).withArguments(arguments) } def assertOutputContains(String givenOutput, String expected) { @@ -132,4 +133,4 @@ abstract class AbstractGradleFuncTest extends Specification { System.err.println("Syserr: " + proc.errorStream.text) } } -} +} \ No newline at end of file diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy rename to build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/DistributionDownloadFixture.groovy diff --git a/buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy b/build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy similarity index 100% rename from buildSrc/src/integTest/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy rename to build-tools/src/testFixtures/groovy/org/elasticsearch/gradle/fixtures/WiremockFixture.groovy diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/BaseTestCase.java diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java similarity index 98% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java index b98468073f7a6..58760d72c1c85 100644 --- a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java +++ b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleIntegrationTestCase.java @@ -63,15 +63,14 @@ protected GradleRunner getGradleRunner() { File testkit; try { testkit = testkitTmpDir.newFolder(); - } catch (IOException e) { throw new UncheckedIOException(e); } - return GradleRunner.create() + return new InternalAwareGradleRunner(GradleRunner.create() .withProjectDir(getProjectDir()) .withPluginClasspath() .withTestKitDir(testkit) - .withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0); + .withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0)); } protected File getBuildDir(String name) { @@ -219,4 +218,5 @@ public void assertOutputOnlyOnce(String output, String... text) { } } } + } diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleThreadsFilter.java diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/GradleUnitTestCase.java diff --git a/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java new file mode 100644 index 0000000000000..789780511c733 --- /dev/null +++ b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java @@ -0,0 +1,141 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.gradle.internal.test; + +import org.gradle.testkit.runner.BuildResult; +import org.gradle.testkit.runner.GradleRunner; +import org.gradle.testkit.runner.InvalidPluginMetadataException; +import org.gradle.testkit.runner.InvalidRunnerConfigurationException; +import org.gradle.testkit.runner.UnexpectedBuildFailure; +import org.gradle.testkit.runner.UnexpectedBuildSuccess; +import org.jetbrains.annotations.Nullable; + +import java.io.File; +import java.io.Writer; +import java.net.URI; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class InternalAwareGradleRunner extends GradleRunner { + private GradleRunner delegate; + + public InternalAwareGradleRunner(GradleRunner delegate) { + this.delegate = delegate; + } + + @Override + public GradleRunner withGradleVersion(String gradleVersion) { + return delegate.withGradleVersion(gradleVersion); + } + + @Override + public GradleRunner withGradleInstallation(File file) { + return delegate.withGradleInstallation(file); + } + + @Override + public GradleRunner withGradleDistribution(URI uri) { + return delegate.withGradleDistribution(uri); + } + + @Override + public GradleRunner withTestKitDir(File file) { + return delegate.withTestKitDir(file); + } + + @Override + public File getProjectDir() { + return delegate.getProjectDir(); + } + + @Override + public GradleRunner withProjectDir(File projectDir) { + return delegate.withProjectDir(projectDir); + } + + @Override + public List getArguments() { + return delegate.getArguments(); + } + + @Override + public GradleRunner withArguments(List arguments) { + List collect = Stream.concat(arguments.stream(), Stream.of("-Dtest.external=true")) + .collect(Collectors.toList()); + return delegate.withArguments(collect); + } + + @Override + public GradleRunner withArguments(String... arguments) { + return withArguments(List.of(arguments)); + } + + @Override + public List getPluginClasspath() { + return delegate.getPluginClasspath(); + } + + @Override + public GradleRunner withPluginClasspath() throws InvalidPluginMetadataException { + return delegate.withPluginClasspath(); + } + + @Override + public GradleRunner withPluginClasspath(Iterable iterable) { + return delegate.withPluginClasspath(iterable); + } + + @Override + public boolean isDebug() { + return delegate.isDebug(); + } + + @Override + public GradleRunner withDebug(boolean b) { + return delegate.withDebug(b); + } + + @Nullable + @Override + public Map getEnvironment() { + return delegate.getEnvironment(); + } + + @Override + public GradleRunner withEnvironment(@Nullable Map map) { + return delegate.withEnvironment(map); + } + + @Override + public GradleRunner forwardStdOutput(Writer writer) { + return delegate.forwardStdOutput(writer); + } + + @Override + public GradleRunner forwardStdError(Writer writer) { + return delegate.forwardStdOutput(writer); + } + + @Override + public GradleRunner forwardOutput() { + return delegate.forwardOutput(); + } + + @Override + public BuildResult build() throws InvalidRunnerConfigurationException, UnexpectedBuildFailure { + return delegate.build(); + } + + @Override + public BuildResult buildAndFail() throws InvalidRunnerConfigurationException, UnexpectedBuildSuccess { + return delegate.buildAndFail(); + } +} diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/JUnit3MethodProvider.java diff --git a/buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java similarity index 100% rename from buildSrc/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java rename to build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/TestClasspathUtils.java diff --git a/build-tools/src/testKit/reaper/build.gradle b/build-tools/src/testKit/reaper/build.gradle new file mode 100644 index 0000000000000..26e47aa9862ec --- /dev/null +++ b/build-tools/src/testKit/reaper/build.gradle @@ -0,0 +1,15 @@ +plugins { + id 'elasticsearch.reaper' +} + +import org.elasticsearch.gradle.ReaperPlugin; +import org.elasticsearch.gradle.util.GradleUtils; + +tasks.register("launchReaper") { + doLast { + def serviceProvider = GradleUtils.getBuildService(project.getGradle().getSharedServices(), ReaperPlugin.REAPER_SERVICE_NAME); + def reaper = serviceProvider.get() + reaper.registerCommand('test', 'true') + reaper.unregister('test') + } +} diff --git a/build-tools/src/testKit/reaper/gradle.properties b/build-tools/src/testKit/reaper/gradle.properties new file mode 100644 index 0000000000000..a9aca06ec7a7c --- /dev/null +++ b/build-tools/src/testKit/reaper/gradle.properties @@ -0,0 +1,11 @@ +# +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0 and the Server Side Public License, v 1; you may not use this file except +# in compliance with, at your election, the Elastic License 2.0 or the Server +# Side Public License, v 1. +# + +# java homes resolved by environment variables +org.gradle.java.installations.auto-detect=false +org.gradle.java.installations.fromEnv=JAVA_HOME,RUNTIME_JAVA_HOME,JAVA15_HOME,JAVA14_HOME,JAVA13_HOME,JAVA12_HOME,JAVA11_HOME,JAVA8_HOME diff --git a/build-tools/src/testKit/reaper/settings.gradle b/build-tools/src/testKit/reaper/settings.gradle new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/build.gradle b/build.gradle index 00ad8868915ec..540ba8c7022f1 100644 --- a/build.gradle +++ b/build.gradle @@ -59,55 +59,12 @@ if (VersionProperties.elasticsearch.toString().endsWith('-SNAPSHOT')) { } else { licenseCommit = "v${version}" } -String elasticLicenseUrl = "https://raw.githubusercontent.com/elastic/elasticsearch/${licenseCommit}/licenses/ELASTIC-LICENSE-2.0.txt" subprojects { // We disable this plugin for now till we shaked out the issues we see // e.g. see https://github.com/elastic/elasticsearch/issues/72169 // apply plugin:'elasticsearch.internal-test-rerun' - // Default to the SSPL+Elastic dual license - project.ext.projectLicenses = [ - 'Server Side Public License, v 1': 'https://www.mongodb.com/licensing/server-side-public-license', - 'Elastic License 2.0': elasticLicenseUrl - ] - - // But stick the Elastic license url in project.ext so we can get it if we need to switch to it - project.ext.elasticLicenseUrl = elasticLicenseUrl - - // we only use maven publish to add tasks for pom generation - plugins.withType(MavenPublishPlugin).whenPluginAdded { - publishing { - publications { - // add license information to generated poms - all { - pom.withXml { XmlProvider xml -> - Node node = xml.asNode() - node.appendNode('inceptionYear', '2009') - - Node licensesNode = node.appendNode('licenses') - project.ext.projectLicenses.forEach { licenseName, licenseUrl -> - Node license = licensesNode.appendNode('license') - license.appendNode('name', licenseName) - license.appendNode('url', licenseUrl) - license.appendNode('distribution', 'repo') - } - - Node developer = node.appendNode('developers').appendNode('developer') - developer.appendNode('name', 'Elastic') - developer.appendNode('url', 'https://www.elastic.co') - } - } - } - repositories { - maven { - name = 'test' - url = "${rootProject.buildDir}/local-test-repo" - } - } - } - } - plugins.withType(BuildPlugin).whenPluginAdded { project.licenseFile = project.rootProject.file('licenses/SSPL-1.0+ELASTIC-LICENSE-2.0.txt') project.noticeFile = project.rootProject.file('NOTICE.txt') @@ -415,9 +372,9 @@ allprojects { prefix = prefix.replace(':', '_') } if (eclipse.project.name.startsWith(prefix)) { - licenseHeaderFile = new File(project.rootDir, 'buildSrc/src/main/resources/license-headers/elastic-license-2.0-header.txt') + licenseHeaderFile = new File(project.rootDir, 'build-tools-internal/src/main/resources/license-headers/elastic-license-2.0-header.txt') } else { - licenseHeaderFile = new File(project.rootDir, 'buildSrc/src/main/resources/license-headers/sspl+elastic-license-header.txt') + licenseHeaderFile = new File(project.rootDir, 'build-tools-internal/src/main/resources/license-headers/sspl+elastic-license-header.txt') } String lineSeparator = Os.isFamily(Os.FAMILY_WINDOWS) ? '\\\\r\\\\n' : '\\\\n' @@ -425,7 +382,7 @@ allprojects { tasks.register('copyEclipseSettings', Copy) { mustRunAfter 'wipeEclipseSettings' // TODO: "package this up" for external builds - from new File(project.rootDir, 'buildSrc/src/main/resources/eclipse.settings') + from new File(project.rootDir, 'build-tools-internal/src/main/resources/eclipse.settings') into '.settings' filter { it.replaceAll('@@LICENSE_HEADER_TEXT@@', licenseHeader) } } @@ -532,6 +489,21 @@ allprojects { } } + +tasks.register("precommit") { + dependsOn gradle.includedBuild('build-tools').task(':precommit') + dependsOn gradle.includedBuild('build-tools-internal').task(':precommit') +} + +tasks.named("checkPart1").configure { + dependsOn gradle.includedBuild('build-tools').task(':check') + dependsOn gradle.includedBuild('build-tools-internal').task(':check') +} + +tasks.named("assemble").configure { + dependsOn gradle.includedBuild('build-tools').task(':assemble') +} + subprojects { project.ext.disableTasks = { String... tasknames -> for (String taskname : tasknames) { diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle deleted file mode 100644 index bb1046b67dc58..0000000000000 --- a/buildSrc/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include 'reaper' diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java deleted file mode 100644 index 1236c8b1c5f1d..0000000000000 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/JarHellPrecommitPlugin.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -package org.elasticsearch.gradle.precommit; - -import org.elasticsearch.gradle.internal.util.Util; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskProvider; - -public class JarHellPrecommitPlugin extends PrecommitPlugin { - @Override - public TaskProvider createTask(Project project) { - Configuration jarHellConfig = project.getConfigurations().create("jarHell"); - TaskProvider jarHell = project.getTasks().register("jarHell", JarHellTask.class); - jarHell.configure(t -> { - SourceSet testSourceSet = Util.getJavaTestSourceSet(project).get(); - t.setClasspath(testSourceSet.getRuntimeClasspath()); - t.setJarHellRuntimeClasspath(jarHellConfig); - }); - - return jarHell; - } -} diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java b/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java deleted file mode 100644 index 3d41896ad5a71..0000000000000 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/precommit/PrecommitTasks.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -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/version.properties b/buildSrc/version.properties index 173cee39d864e..2846d03116410 100644 --- a/buildSrc/version.properties +++ b/buildSrc/version.properties @@ -4,13 +4,13 @@ lucene = 8.9.0-snapshot-ddc238e5df8 bundled_jdk_vendor = adoptopenjdk bundled_jdk = 16.0.1+9 -checkstyle = 8.42 +checkstyle = 8.39 # optional dependencies spatial4j = 0.7 jts = 1.15.0 -jackson = 2.12.2 -snakeyaml = 1.27 +jackson = 2.10.4 +snakeyaml = 1.26 icu4j = 62.1 supercsv = 2.4.0 # when updating log4j, please update also docs/java-api/index.asciidoc @@ -21,7 +21,7 @@ ecsLogging = 0.1.3 # when updating the JNA version, also update the version in buildSrc/build.gradle jna = 5.7.0-1 -netty = 4.1.63.Final +netty = 4.1.49.Final joda = 2.10.10 commons_lang3 = 3.9 diff --git a/client/rest-high-level/build.gradle b/client/rest-high-level/build.gradle index 4e716c5585a42..3fe0e28d28552 100644 --- a/client/rest-high-level/build.gradle +++ b/client/rest-high-level/build.gradle @@ -19,7 +19,7 @@ group = 'org.elasticsearch.client' archivesBaseName = 'elasticsearch-rest-high-level-client' // HLRC is published under the Elastic License -ext.projectLicenses = ['Elastic License 2.0': ext.elasticLicenseUrl] +ext.projectLicenses.set(['Elastic License 2.0': ext.elasticLicenseUrl.get()]) restResources { //we need to copy the yaml spec so we can check naming (see RestHighlevelClientTests#testApiNamingConventions) diff --git a/client/rest/build.gradle b/client/rest/build.gradle index 66592d5ed0228..fc0069440f139 100644 --- a/client/rest/build.gradle +++ b/client/rest/build.gradle @@ -17,7 +17,7 @@ * under the License. */ import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis -import org.elasticsearch.gradle.internal.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.publish' @@ -29,7 +29,7 @@ group = 'org.elasticsearch.client' archivesBaseName = 'elasticsearch-rest-client' // LLRC is licenses under Apache 2.0 -ext.projectLicenses = ['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'] +ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) ext.licenseFile = rootProject.file('licenses/APACHE-LICENSE-2.0.txt') dependencies { diff --git a/client/sniffer/build.gradle b/client/sniffer/build.gradle index d89ec76000ee2..bd34d1a70b204 100644 --- a/client/sniffer/build.gradle +++ b/client/sniffer/build.gradle @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import org.elasticsearch.gradle.internal.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.publish' @@ -28,7 +28,7 @@ group = 'org.elasticsearch.client' archivesBaseName = 'elasticsearch-rest-client-sniffer' // rest client sniffer is licenses under Apache 2.0 -ext.projectLicenses = ['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'] +ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) ext.licenseFile = rootProject.file('licenses/APACHE-LICENSE-2.0.txt') dependencies { diff --git a/client/test/build.gradle b/client/test/build.gradle index d8ef6897f7f3b..f619b74166639 100644 --- a/client/test/build.gradle +++ b/client/test/build.gradle @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import org.elasticsearch.gradle.internal.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask apply plugin: 'elasticsearch.build' @@ -15,7 +15,7 @@ sourceCompatibility = JavaVersion.VERSION_1_8 group = "${group}.client.test" // rest client sniffer is licenses under Apache 2.0 -ext.projectLicenses = ['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'] +ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) ext.licenseFile = rootProject.file('licenses/APACHE-LICENSE-2.0.txt') dependencies { diff --git a/rest-api-spec/build.gradle b/rest-api-spec/build.gradle index b01ea8ac68bff..69ef1ed2178e5 100644 --- a/rest-api-spec/build.gradle +++ b/rest-api-spec/build.gradle @@ -14,7 +14,7 @@ restResources { } // REST API specifications are published under the Apache 2.0 License -ext.projectLicenses = ['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0'] +ext.projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) ext.licenseFile = rootProject.file('licenses/APACHE-LICENSE-2.0.txt') artifacts { diff --git a/settings.gradle b/settings.gradle index 26e2546da2cd9..7000be404f112 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,11 +2,13 @@ plugins { id "com.gradle.enterprise" version "3.5.1" } +includeBuild "build-conventions" +includeBuild "build-tools" +includeBuild "build-tools-internal" + rootProject.name = "elasticsearch" List projects = [ - 'build-tools', - 'build-tools:reaper', 'rest-api-spec', 'docs', 'client:rest', @@ -109,8 +111,8 @@ List startTasks = gradle.startParameter.taskNames include projects.toArray(new String[0]) -project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc') -project(':build-tools:reaper').projectDir = new File(rootProject.projectDir, 'buildSrc/reaper') +//project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc') +//project(':build-tools:reaper').projectDir = new File(rootProject.projectDir, 'buildSrc/reaper') project(":libs").children.each { libsProject -> libsProject.name = "elasticsearch-${libsProject.name}" diff --git a/x-pack/build.gradle b/x-pack/build.gradle index ae2f0027f0cfe..e5b258ee8a53e 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.internal.precommit.LicenseHeadersTask +import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTask Project xpackRootProject = project @@ -36,7 +36,9 @@ subprojects { additionalLicense 'ELAST', 'Elastic License 2.0', '2.0; you may not use this file except in compliance with the Elastic License' } - ext.projectLicenses = ['Elastic License 2.0': ext.elasticLicenseUrl] + project.getPluginManager().withPlugin("elasticsearch.licensing") { + ext.projectLicenses.set(['Elastic License 2.0': ext.elasticLicenseUrl.get()]) + } project.ext.licenseFile = rootProject.file('licenses/ELASTIC-LICENSE-2.0.txt') project.ext.noticeFile = xpackRootProject.file('NOTICE.txt') diff --git a/x-pack/plugin/autoscaling/build.gradle b/x-pack/plugin/autoscaling/build.gradle index 4e1aa8e1d6774..4baa8efe8fcc9 100644 --- a/x-pack/plugin/autoscaling/build.gradle +++ b/x-pack/plugin/autoscaling/build.gradle @@ -1,4 +1,3 @@ -import org.elasticsearch.gradle.internal.info.BuildParams apply plugin: 'elasticsearch.internal-es-plugin' apply plugin: 'elasticsearch.internal-cluster-test'