Skip to content

Commit a6c4594

Browse files
breskebynik9000
andauthored
Update build to Gradle 7.0 (7.x back porting) (elastic#68506) (elastic#71613)
- Update gradle wrapper to gradle 7.0 - Remove deprecated usages to make build 7.0 compatible - Fix excludes in docs snippet tasks (See gradle/gradle#16160 for details) - Fix deprecation warnings in 7.0 - Add explicit dependencies that have been missed - Make extract native licenses tasks output dir more explicit - Use a snapshot of the ospackage plugin that includes a fix for 7.0 already - fix test runtime classpath setup in repository-hdfs - Make task dependency explicit to fix further deprecation warnings - Remove manual check for http repo usages that has been deprecated in gradle 7.0 - Update spock to latest 2.0 milestone required for groovy 3 - Disable module inference in Eclipse (elastic#71649) We recently upgrade to gradle 7.0 (elastic#69096) which turned on module inference by default. I'm sure that's lovely, but its broken eclipse. We should probably support modules one day, but that day ain't today. This turns off module inference for eclipse so it can continue compiling things just like it did yesterday. Co-authored-by: Nik Everett <[email protected]>
1 parent 7ba9890 commit a6c4594

File tree

26 files changed

+348
-345
lines changed

26 files changed

+348
-345
lines changed

build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ allprojects {
283283
}
284284
}
285285
boolean hasShadow = project.plugins.hasPlugin(ShadowPlugin)
286-
project.configurations.compile.dependencies
286+
project.configurations.compileClasspath.dependencies
287287
.findAll()
288288
.toSorted(sortClosure)
289289
.each({ c -> depJavadocClosure(hasShadow, c) })
@@ -342,6 +342,7 @@ allprojects {
342342
}
343343

344344
plugins.withType(JavaBasePlugin) {
345+
java.modularity.inferModulePath.set(false)
345346
eclipse.classpath.file.whenMerged { classpath ->
346347
/*
347348
* give each source folder a unique corresponding output folder

buildSrc/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ dependencies {
117117
testImplementation 'com.github.tomakehurst:wiremock-jre8-standalone:2.23.2'
118118
testImplementation 'org.mockito:mockito-core:1.9.5'
119119
testImplementation "org.hamcrest:hamcrest:${props.getProperty('hamcrest')}"
120-
integTestImplementation('org.spockframework:spock-core:1.3-groovy-2.5') {
120+
integTestImplementation('org.spockframework:spock-core:2.0-M5-groovy-3.0') {
121121
exclude module: "groovy"
122122
}
123123
integTestImplementation "org.xmlunit:xmlunit-core:2.8.2"

buildSrc/src/integTest/java/org/elasticsearch/gradle/BuildPluginIT.java

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.nio.charset.StandardCharsets;
2222
import java.nio.file.Files;
2323
import java.nio.file.Path;
24-
import java.util.Arrays;
2524
import java.util.List;
2625
import java.util.zip.ZipEntry;
2726
import java.util.zip.ZipFile;
@@ -45,36 +44,6 @@ public void testCheckTask() {
4544
assertTaskSuccessful(result, ":check");
4645
}
4746

48-
public void testInsecureMavenRepository() throws IOException {
49-
final String name = "elastic-maven";
50-
final String url = "http://s3.amazonaws.com/artifacts.elastic.co/maven";
51-
// add an insecure maven repository to the build.gradle
52-
final List<String> lines = Arrays.asList(
53-
"repositories {",
54-
" maven {",
55-
" name \"elastic-maven\"",
56-
" url \"" + url + "\"\n",
57-
" }",
58-
"}"
59-
);
60-
runInsecureArtifactRepositoryTest(name, url, lines);
61-
}
62-
63-
public void testInsecureIvyRepository() throws IOException {
64-
final String name = "elastic-ivy";
65-
final String url = "http://s3.amazonaws.com/artifacts.elastic.co/ivy";
66-
// add an insecure ivy repository to the build.gradle
67-
final List<String> lines = Arrays.asList(
68-
"repositories {",
69-
" ivy {",
70-
" name \"elastic-ivy\"",
71-
" url \"" + url + "\"\n",
72-
" }",
73-
"}"
74-
);
75-
runInsecureArtifactRepositoryTest(name, url, lines);
76-
}
77-
7847
private void runInsecureArtifactRepositoryTest(final String name, final String url, final List<String> lines) throws IOException {
7948
final File projectDir = getProjectDir("elasticsearch.build");
8049
final Path projectDirPath = projectDir.toPath();

buildSrc/src/main/groovy/org/elasticsearch/gradle/doc/SnippetsTask.groovy

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ class SnippetsTask extends DefaultTask {
3030
private static final String SCHAR = /(?:\\\/|[^\/])/
3131
private static final String SUBSTITUTION = /s\/($SCHAR+)\/($SCHAR*)\//
3232
private static final String CATCH = /catch:\s*((?:\/[^\/]+\/)|[^ \]]+)/
33-
private static final String SKIP = /skip:([^\]]+)/
33+
private static final String SKIP_REGEX = /skip:([^\]]+)/
3434
private static final String SETUP = /setup:([^ \]]+)/
3535
private static final String TEARDOWN = /teardown:([^ \]]+)/
3636
private static final String WARNING = /warning:(.+)/
3737
private static final String NON_JSON = /(non_json)/
3838
private static final String TEST_SYNTAX =
39-
/(?:$CATCH|$SUBSTITUTION|$SKIP|(continued)|$SETUP|$TEARDOWN|$WARNING|(skip_shard_failures)) ?/
39+
/(?:$CATCH|$SUBSTITUTION|$SKIP_REGEX|(continued)|$SETUP|$TEARDOWN|$WARNING|(skip_shard_failures)) ?/
4040

4141
/**
4242
* Action to take on each snippet. Called with a single parameter, an
@@ -51,12 +51,7 @@ class SnippetsTask extends DefaultTask {
5151
* directory.
5252
*/
5353
@InputFiles
54-
ConfigurableFileTree docs = project.fileTree(project.projectDir) {
55-
// No snippets in the build file
56-
exclude 'build.gradle'
57-
// That is where the snippets go, not where they come from!
58-
exclude 'build'
59-
}
54+
ConfigurableFileTree docs
6055

6156
/**
6257
* Substitutions done on every snippet's contents.
@@ -251,7 +246,7 @@ class SnippetsTask extends DefaultTask {
251246
substitutions = []
252247
}
253248
String loc = "$file:$lineNumber"
254-
parse(loc, matcher.group(2), /(?:$SUBSTITUTION|$NON_JSON|$SKIP) ?/) {
249+
parse(loc, matcher.group(2), /(?:$SUBSTITUTION|$NON_JSON|$SKIP_REGEX) ?/) {
255250
if (it.group(1) != null) {
256251
// TESTRESPONSE[s/adsf/jkl/]
257252
substitutions.add([it.group(1), it.group(2)])

buildSrc/src/main/java/org/elasticsearch/gradle/RepositoriesSetupPlugin.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.gradle.api.Plugin;
1313
import org.gradle.api.Project;
1414
import org.gradle.api.artifacts.dsl.RepositoryHandler;
15-
import org.gradle.api.artifacts.repositories.IvyArtifactRepository;
1615
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
1716

1817
import java.net.MalformedURLException;
@@ -37,20 +36,6 @@ public void apply(Project project) {
3736
* Adds repositories used by ES projects and dependencies
3837
*/
3938
public static void configureRepositories(Project project) {
40-
// ensure all repositories use secure urls
41-
// TODO: remove this with gradle 7.0, which no longer allows insecure urls
42-
project.getRepositories().all(repository -> {
43-
if (repository instanceof MavenArtifactRepository) {
44-
final MavenArtifactRepository maven = (MavenArtifactRepository) repository;
45-
assertRepositoryURIIsSecure(maven.getName(), project.getPath(), maven.getUrl());
46-
for (URI uri : maven.getArtifactUrls()) {
47-
assertRepositoryURIIsSecure(maven.getName(), project.getPath(), uri);
48-
}
49-
} else if (repository instanceof IvyArtifactRepository) {
50-
final IvyArtifactRepository ivy = (IvyArtifactRepository) repository;
51-
assertRepositoryURIIsSecure(ivy.getName(), project.getPath(), ivy.getUrl());
52-
}
53-
});
5439
RepositoryHandler repos = project.getRepositories();
5540
if (System.getProperty("repos.mavenLocal") != null) {
5641
// with -Drepos.mavenLocal=true we can force checking the local .m2 repo which is

buildSrc/src/main/java/org/elasticsearch/gradle/info/GlobalBuildInfoPlugin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.gradle.internal.jvm.inspection.JvmMetadataDetector;
2525
import org.gradle.internal.jvm.inspection.JvmVendor;
2626
import org.gradle.jvm.toolchain.internal.InstallationLocation;
27-
import org.gradle.jvm.toolchain.internal.SharedJavaInstallationRegistry;
27+
import org.gradle.jvm.toolchain.internal.JavaInstallationRegistry;
2828
import org.gradle.util.GradleVersion;
2929

3030
import javax.inject.Inject;
@@ -59,13 +59,13 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
5959
private static Integer _defaultParallel = null;
6060
private static Boolean _isBundledJdkSupported = null;
6161

62-
private final SharedJavaInstallationRegistry javaInstallationRegistry;
62+
private final JavaInstallationRegistry javaInstallationRegistry;
6363
private final JvmMetadataDetector metadataDetector;
6464
private final ProviderFactory providers;
6565

6666
@Inject
6767
public GlobalBuildInfoPlugin(
68-
SharedJavaInstallationRegistry javaInstallationRegistry,
68+
JavaInstallationRegistry javaInstallationRegistry,
6969
JvmMetadataDetector metadataDetector,
7070
ProviderFactory providers
7171
) {

buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/DependencyLicensesTask.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,15 +120,15 @@ public class DependencyLicensesTask extends DefaultTask {
120120
* the LICENSE and NOTICE file for that jar.
121121
*/
122122
public void mapping(Map<String, String> props) {
123-
String from = props.remove("from");
123+
String from = props.get("from");
124124
if (from == null) {
125125
throw new InvalidUserDataException("Missing \"from\" setting for license name mapping");
126126
}
127-
String to = props.remove("to");
127+
String to = props.get("to");
128128
if (to == null) {
129129
throw new InvalidUserDataException("Missing \"to\" setting for license name mapping");
130130
}
131-
if (props.isEmpty() == false) {
131+
if (props.size() > 2) {
132132
throw new InvalidUserDataException("Unknown properties for mapping on dependencyLicenses: " + props.keySet());
133133
}
134134
mappings.put(from, to);

buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/FilePermissionsPrecommitPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
public class FilePermissionsPrecommitPlugin extends PrecommitPlugin implements InternalPlugin {
2323

24+
public static final String FILEPERMISSIONS_TASK_NAME = "filepermissions";
2425
private ProviderFactory providerFactory;
2526

2627
@Inject
@@ -32,7 +33,7 @@ public FilePermissionsPrecommitPlugin(ProviderFactory providerFactory) {
3233
public TaskProvider<? extends Task> createTask(Project project) {
3334
return project.getTasks()
3435
.register(
35-
"filepermissions",
36+
FILEPERMISSIONS_TASK_NAME,
3637
FilePermissionsTask.class,
3738
filePermissionsTask -> filePermissionsTask.getSources()
3839
.addAll(

buildSrc/src/main/java/org/elasticsearch/gradle/internal/precommit/ForbiddenPatternsPrecommitPlugin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
public class ForbiddenPatternsPrecommitPlugin extends PrecommitPlugin implements InternalPlugin {
2323

24+
public static final String FORBIDDEN_PATTERNS_TASK_NAME = "forbiddenPatterns";
2425
private final ProviderFactory providerFactory;
2526

2627
@Inject
@@ -30,7 +31,7 @@ public ForbiddenPatternsPrecommitPlugin(ProviderFactory providerFactory) {
3031

3132
@Override
3233
public TaskProvider<? extends Task> createTask(Project project) {
33-
return project.getTasks().register("forbiddenPatterns", ForbiddenPatternsTask.class, forbiddenPatternsTask -> {
34+
return project.getTasks().register(FORBIDDEN_PATTERNS_TASK_NAME, ForbiddenPatternsTask.class, forbiddenPatternsTask -> {
3435
forbiddenPatternsTask.getSourceFolders()
3536
.addAll(
3637
providerFactory.provider(

buildSrc/src/main/java/org/elasticsearch/gradle/test/TestWithSslPlugin.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
import org.elasticsearch.gradle.ExportElasticsearchBuildResourcesTask;
1212
import org.elasticsearch.gradle.info.BuildParams;
13+
import org.elasticsearch.gradle.internal.precommit.FilePermissionsPrecommitPlugin;
14+
import org.elasticsearch.gradle.internal.precommit.ForbiddenPatternsPrecommitPlugin;
1315
import org.elasticsearch.gradle.internal.precommit.ForbiddenPatternsTask;
1416
import org.elasticsearch.gradle.testclusters.ElasticsearchCluster;
1517
import org.elasticsearch.gradle.testclusters.TestClustersAware;
@@ -23,6 +25,9 @@
2325

2426
import java.io.File;
2527

28+
import static org.elasticsearch.gradle.internal.precommit.FilePermissionsPrecommitPlugin.FILEPERMISSIONS_TASK_NAME;
29+
import static org.elasticsearch.gradle.internal.precommit.ForbiddenPatternsPrecommitPlugin.FORBIDDEN_PATTERNS_TASK_NAME;
30+
2631
public class TestWithSslPlugin implements Plugin<Project> {
2732

2833
@Override
@@ -38,14 +43,19 @@ public void apply(Project project) {
3843
t.copy("test/ssl/test-node.jks");
3944
t.setOutputDir(keyStoreDir);
4045
});
41-
46+
project.getPlugins()
47+
.withType(ForbiddenPatternsPrecommitPlugin.class)
48+
.configureEach(plugin -> project.getTasks().named(FORBIDDEN_PATTERNS_TASK_NAME).configure(t -> t.dependsOn(exportKeyStore)));
49+
project.getPlugins()
50+
.withType(FilePermissionsPrecommitPlugin.class)
51+
.configureEach(
52+
filePermissionPlugin -> project.getTasks().named(FILEPERMISSIONS_TASK_NAME).configure(t -> t.dependsOn(exportKeyStore))
53+
);
4254
project.getPlugins().withType(StandaloneRestTestPlugin.class).configureEach(restTestPlugin -> {
4355
SourceSet testSourceSet = Util.getJavaTestSourceSet(project).get();
4456
testSourceSet.getResources().srcDir(new File(keyStoreDir, "test/ssl"));
45-
testSourceSet.compiledBy(exportKeyStore);
46-
57+
project.getTasks().named(testSourceSet.getProcessResourcesTaskName()).configure(t -> t.dependsOn(exportKeyStore));
4758
project.getTasks().withType(TestClustersAware.class).configureEach(clusterAware -> clusterAware.dependsOn(exportKeyStore));
48-
4959
// Tell the tests we're running with ssl enabled
5060
project.getTasks()
5161
.withType(RestIntegTestTask.class)

buildSrc/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,8 @@ public static void setupIdeForTestSourceSet(Project project, SourceSet testSourc
162162
*/
163163
public static void extendSourceSet(Project project, String parentSourceSetName, String childSourceSetName) {
164164
final List<Function<SourceSet, String>> configNameFunctions = Arrays.asList(
165-
SourceSet::getCompileConfigurationName,
165+
SourceSet::getCompileOnlyConfigurationName,
166166
SourceSet::getImplementationConfigurationName,
167-
SourceSet::getRuntimeConfigurationName,
168167
SourceSet::getRuntimeOnlyConfigurationName
169168
);
170169
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.8.3
1+
7.0

0 commit comments

Comments
 (0)