Skip to content

Commit c127242

Browse files
committed
Upgrade to Develocity Plugin 4.0.2
Closes gh-101
1 parent f00d365 commit c127242

File tree

5 files changed

+69
-25
lines changed

5 files changed

+69
-25
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ To work around this, an environment variable named `BRANCH` can be set on the ta
5656
### Anonymous publication
5757

5858
When using Gradle, build scans can be published anonymously to scans.gradle.com by running the build with `--scan`.
59+
This requires Gradle 8.8 or later.
5960

6061
## Authentication
6162

develocity-conventions-gradle-plugin/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ repositories {
1313

1414
dependencies {
1515
implementation(project(":develocity-conventions-core"))
16-
implementation("com.gradle:develocity-gradle-plugin:3.19.2")
16+
implementation("com.gradle:develocity-gradle-plugin:4.0.2")
1717

1818
testImplementation("org.assertj:assertj-core:3.27.2")
1919
testImplementation("org.junit.jupiter:junit-jupiter:5.13.0")

develocity-conventions-gradle-plugin/src/main/java/io/spring/develocity/conventions/gradle/DevelocityConventionsPlugin.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
import org.gradle.api.initialization.Settings;
3636
import org.gradle.api.internal.ProcessOperations;
3737
import org.gradle.api.provider.Provider;
38+
import org.gradle.util.GradleVersion;
39+
import org.slf4j.Logger;
40+
import org.slf4j.LoggerFactory;
3841

3942
/**
4043
* {@link Plugin plugin} for configuring the use of Develocity hosted at
@@ -44,6 +47,8 @@
4447
*/
4548
public class DevelocityConventionsPlugin implements Plugin<Settings> {
4649

50+
private final Logger log = LoggerFactory.getLogger(DevelocityConventionsPlugin.class);
51+
4752
private final ProcessOperations processOperations;
4853

4954
@Inject
@@ -53,6 +58,11 @@ public DevelocityConventionsPlugin(ProcessOperations processOperations) {
5358

5459
@Override
5560
public void apply(Settings settings) {
61+
if (buildScanRequested(settings) && gradleVersionIsLessThanEightEight()) {
62+
this.log.warn("Develocity conventions disabled. Using --scan requires Gradle 8.8 or later. "
63+
+ "Current Gradle version is " + GradleVersion.current().getVersion());
64+
return;
65+
}
5666
settings.getPlugins().apply(DevelocityPlugin.class);
5767
DevelocityConfiguration extension = settings.getExtensions().getByType(DevelocityConfiguration.class);
5868
if (!isOssBuild(settings)) {
@@ -69,6 +79,14 @@ public void apply(Settings settings) {
6979
}
7080
}
7181

82+
private boolean buildScanRequested(Settings settings) {
83+
return settings.getStartParameter().isBuildScan();
84+
}
85+
86+
private boolean gradleVersionIsLessThanEightEight() {
87+
return GradleVersion.version("8.8").compareTo(GradleVersion.current()) > 0;
88+
}
89+
7290
private boolean isOssBuild(Settings settings) {
7391
Properties properties = new Properties();
7492
File propertiesFile = new File(settings.getRootDir(), "gradle.properties");

develocity-conventions-gradle-plugin/src/test/java/io/spring/develocity/conventions/gradle/DevelocityConventionsPluginIntegrationTests.java

Lines changed: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2020-2024 the original author or authors.
2+
* Copyright 2020-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -48,8 +48,8 @@ class DevelocityConventionsPluginIntegrationTests {
4848
void whenThePluginIsAppliedThenBuildScanConventionsAreApplied(@TempDir File projectDir) {
4949
prepareProject(projectDir);
5050
BuildResult result = build(projectDir, "verifyBuildScanConfig");
51-
assertThat(result.getOutput()).contains("Build scan server: https://ge.spring.io");
52-
assertThat(result.getOutput()).contains("Capture task input files: true");
51+
assertThat(result.getOutput()).contains("Develocity server: https://ge.spring.io");
52+
assertThat(result.getOutput()).contains("Capture file fingerprints: true");
5353
}
5454

5555
@Test
@@ -63,8 +63,8 @@ void whenThePluginIsAppliedThenBuildCacheConventionsAreApplied(@TempDir File pro
6363
void whenThePluginIsAppliedAndBuildScansAreDisabledThenBuildScanConventionsAreNotApplied(@TempDir File projectDir) {
6464
prepareProject(projectDir);
6565
BuildResult result = build(projectDir, "verifyBuildScanConfig", "--no-scan");
66-
assertThat(result.getOutput()).contains("Build scan server: null");
67-
assertThat(result.getOutput()).contains("Capture task input files: false");
66+
assertThat(result.getOutput()).contains("Develocity server: null");
67+
assertThat(result.getOutput()).contains("Capture file fingerprints: false");
6868
}
6969

7070
@Test
@@ -73,43 +73,53 @@ void whenThePluginIsAppliedAndTheSpringBuildTypeIsNotOssThenBuildScanConventions
7373
prepareProject(projectDir);
7474
write(new File(projectDir, "gradle.properties"), (writer) -> writer.println("spring.build-type=other"));
7575
BuildResult result = build(projectDir, "verifyBuildScanConfig");
76-
assertThat(result.getOutput()).contains("Build scan server: null");
77-
assertThat(result.getOutput()).contains("Capture task input files: false");
76+
assertThat(result.getOutput()).contains("Develocity server: null");
77+
assertThat(result.getOutput()).contains("Capture file fingerprints: false");
7878
}
7979

8080
@Test
8181
void whenThePluginIsAppliedAndTheSpringBuildTypeIsOssThenBuildScanConventionsAreApplied(@TempDir File projectDir) {
8282
prepareProject(projectDir);
8383
write(new File(projectDir, "gradle.properties"), (writer) -> writer.println("spring.build-type=oss"));
8484
BuildResult result = build(projectDir, "verifyBuildScanConfig");
85-
assertThat(result.getOutput()).contains("Build scan server: https://ge.spring.io");
86-
assertThat(result.getOutput()).contains("Capture task input files: true");
85+
assertThat(result.getOutput()).contains("Develocity server: https://ge.spring.io");
86+
assertThat(result.getOutput()).contains("Capture file fingerprints: true");
8787
}
8888

8989
@Test
9090
void whenThePluginIsAppliedAndPropertiesTaskIsExecutedThenBuildScanConventionsAreNotApplied(
9191
@TempDir File projectDir) {
9292
prepareProject(projectDir);
9393
BuildResult result = build(projectDir, "properties", "verifyBuildScanConfig", "--no-scan");
94-
assertThat(result.getOutput()).contains("Build scan server: null");
95-
assertThat(result.getOutput()).contains("Capture task input files: false");
94+
assertThat(result.getOutput()).contains("Develocity server: null");
95+
assertThat(result.getOutput()).contains("Capture file fingerprints: false");
9696
}
9797

9898
@Test
9999
void givenMultiProjectBuildWhenThePluginIsAppliedAndPropertiesTaskIsExecutedThenBuildScanConventionsAreNotApplied(
100100
@TempDir File projectDir) {
101101
prepareMultiModuleProject(projectDir);
102102
BuildResult result = build(projectDir, "sub:properties", "sub:verifyBuildScanConfig", "--no-scan");
103-
assertThat(result.getOutput()).contains("Build scan server: null");
104-
assertThat(result.getOutput()).contains("Capture task input files: false");
103+
assertThat(result.getOutput()).contains("Develocity server: null");
104+
assertThat(result.getOutput()).contains("Capture file fingerprints: false");
105105
}
106106

107107
@Test
108-
void whenThePluginIsAppliedAndScanIsSpecifiedThenServerIsNotCustomized(@TempDir File projectDir) {
108+
void whenThePluginIsAppliedAndScanIsSpecifiedItBacksOff(@TempDir File projectDir) {
109109
prepareProject(projectDir);
110-
BuildResult result = build(projectDir, "verifyBuildScanConfig", "--scan");
111-
assertThat(result.getOutput()).contains("Build scan server: null");
112-
assertThat(result.getOutput()).contains("Capture task input files: true");
110+
BuildResult result = build(projectDir, "--scan");
111+
assertThat(result.getOutput())
112+
.contains("Develocity conventions disabled. Using --scan requires Gradle 8.8 or later. "
113+
+ "Current Gradle version is 7.4.2");
114+
}
115+
116+
@Test
117+
void whenThePluginIsAppliedAndScanIsSpecifiedWithGradleEightEightServerIsNotCustomized(@TempDir File projectDir) {
118+
prepareProject(projectDir);
119+
BuildResult result = build(
120+
prepareBuild(projectDir, "verifyBuildScanConfig", "--scan").withGradleVersion("8.8"));
121+
assertThat(result.getOutput()).contains("Develocity server: null");
122+
assertThat(result.getOutput()).contains("Capture file fingerprints: true");
113123
}
114124

115125
@Test
@@ -147,8 +157,9 @@ private void prepareProject(File projectDir) {
147157
write(new File(projectDir, "build.gradle"), (writer) -> {
148158
writer.println("task verifyBuildScanConfig {");
149159
writer.println(" doFirst {");
150-
writer.println(" println \"Build scan server: ${buildScan.server}\"");
151-
writer.println(" println \"Capture task input files: ${buildScan.captureTaskInputFiles}\"");
160+
writer.println(" println \"Develocity server: ${develocity.server.getOrElse(null)}\"");
161+
writer.println(" def fileFingerprints = develocity.buildScan.capture.fileFingerprints");
162+
writer.println(" println \"Capture file fingerprints: ${fileFingerprints.getOrElse(false)}\"");
152163
writer.println(" }");
153164
writer.println("}");
154165
writer.println("task verifyBuildCacheConfig {");
@@ -172,8 +183,9 @@ private void prepareMultiModuleProject(File projectDir) {
172183
write(new File(new File(projectDir, "sub"), "build.gradle"), (writer) -> {
173184
writer.println("task verifyBuildScanConfig {");
174185
writer.println(" doFirst {");
175-
writer.println(" println \"Build scan server: ${buildScan.server}\"");
176-
writer.println(" println \"Capture task input files: ${buildScan.captureTaskInputFiles}\"");
186+
writer.println(" println \"Develocity server: ${develocity.server.getOrElse(null)}\"");
187+
writer.println(" def fileFingerprints = develocity.buildScan.capture.fileFingerprints");
188+
writer.println(" println \"Capture file fingerprints: ${fileFingerprints.getOrElse(false)}\"");
177189
writer.println(" }");
178190
writer.println("}");
179191
writer.println("task verifyBuildCacheConfig {");
@@ -207,6 +219,10 @@ private String version() {
207219
}
208220

209221
private BuildResult build(File projectDir, String... arguments) {
222+
return build(prepareBuild(projectDir, arguments));
223+
}
224+
225+
private GradleRunner prepareBuild(File projectDir, String... arguments) {
210226
List<File> classpath = Arrays.asList(new File("bin/main"), new File("build/classes/java/main"),
211227
new File("build/resources/main"),
212228
new File(DevelocityPlugin.class.getProtectionDomain().getCodeSource().getLocation().getFile()),
@@ -216,8 +232,11 @@ private BuildResult build(File projectDir, String... arguments) {
216232
return GradleRunner.create()
217233
.withProjectDir(projectDir)
218234
.withPluginClasspath(classpath)
219-
.withArguments(augmentedArguments)
220-
.build();
235+
.withArguments(augmentedArguments);
236+
}
237+
238+
private BuildResult build(GradleRunner runner) {
239+
return runner.build();
221240
}
222241

223242
}

develocity-conventions-gradle-plugin/src/test/java/io/spring/develocity/conventions/gradle/TestDevelocityConfiguration.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2020-2024 the original author or authors.
2+
* Copyright 2020-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@
1818

1919
import com.gradle.develocity.agent.gradle.DevelocityConfiguration;
2020
import com.gradle.develocity.agent.gradle.buildcache.DevelocityBuildCache;
21+
import com.gradle.develocity.agent.gradle.integration.DevelocityIntegrationConfiguration;
2122
import com.gradle.develocity.agent.gradle.scan.BuildScanConfiguration;
2223
import org.gradle.api.Action;
2324
import org.gradle.api.provider.Property;
@@ -72,4 +73,9 @@ public Property<Boolean> getEdgeDiscovery() {
7273
throw new UnsupportedOperationException();
7374
}
7475

76+
@Override
77+
public DevelocityIntegrationConfiguration getIntegration() {
78+
throw new UnsupportedOperationException();
79+
}
80+
7581
}

0 commit comments

Comments
 (0)