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 0000000000000..6b1f5d4fc37a5 Binary files /dev/null and b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-config.tar.gz differ diff --git a/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz new file mode 100644 index 0000000000000..c449d39cb1188 Binary files /dev/null and b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch-with-added-jar.tar.gz differ 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 0000000000000..c86378d8f9b03 Binary files /dev/null and b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.tar.gz differ 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 0000000000000..42b572e37f3fb Binary files /dev/null and b/build-tools/src/integTest/resources/org/elasticsearch/gradle/fake_elasticsearch.zip differ 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 0000000000000..cc44494515b9f Binary files /dev/null and b/build-tools/src/test/resources/ca.p12 differ 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'