Skip to content

Commit b490f62

Browse files
committed
Bump Gradle to version 8.0.1
Bumps Gradle version to 8.0.1, adopts the build scripts. No functional change. Use thread-safe `AtomicReference` instead of an object array in `QuarkusDevGradleTestBase` Stop (and forcefully stop) processes launched by `QuarkusGradleWrapperTestBase` after all tests and on shutdown (for paranoia) Add missing `UP_TO_DATE` a "success" outcome in `BuildResult` Add convenience function `BuildResult.unsuccessfulTasks()` Refactor the `BuildConfigurationTest`, it suffers from false-test-failures due to #30852 - also refactored the test to be (hopefully) more readable, but definitely quicker and "nicer" when test failures happen Fix for removed `AbstractArchiveTask.classifier`, replace usages of the previously deprecated (and in Gradle 8 removed) `AbstractArchiveTask.classifier` with `archiveClassifier` Make the relevant Quarkus configurations not consumable, configurations that are consumable AND resolvable are a hard error since Gradle 8. Also let QuarkusPlugin _register_ (and not eagerly configure) the Quarkus configurations. Split `implementation-files` integration test project into a variant using `files()` and another using `project()` dependency
1 parent 8abdb37 commit b490f62

File tree

28 files changed

+309
-172
lines changed

28 files changed

+309
-172
lines changed

build-parent/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
<!-- These 2 properties are used by CreateProjectMojo to add the Maven Wrapper -->
6666
<proposed-maven-version>3.8.7</proposed-maven-version>
6767
<maven-wrapper.version>3.1.1</maven-wrapper.version>
68-
<gradle-wrapper.version>7.5.1</gradle-wrapper.version>
68+
<gradle-wrapper.version>8.0.1</gradle-wrapper.version>
6969
<quarkus-gradle-plugin.version>${project.version}</quarkus-gradle-plugin.version>
7070
<quarkus-maven-plugin.version>${project.version}</quarkus-maven-plugin.version>
7171

devtools/gradle/gradle-application-plugin/build.gradle

+3-6
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,11 @@ gradlePlugin {
2424
implementationClass = 'io.quarkus.gradle.QuarkusPlugin'
2525
displayName = 'Quarkus Plugin'
2626
description = 'Builds a Quarkus application, and provides helpers to launch dev-mode, the Quarkus CLI, building of native images'
27+
tags.addAll(['quarkus', 'quarkusio', 'graalvm'])
2728
}
2829
}
29-
}
30-
31-
pluginBundle {
32-
website = 'https://quarkus.io/'
33-
vcsUrl = 'https://github.com/quarkusio/quarkus'
34-
tags = ['quarkus', 'quarkusio', 'graalvm']
30+
vcsUrl.set("https://github.com/quarkusio/quarkus")
31+
website.set("https://quarkus.io/")
3532
}
3633

3734
test {

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/QuarkusPlugin.java

+13-13
Original file line numberDiff line numberDiff line change
@@ -210,23 +210,23 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
210210
TaskProvider<Task> testResourcesTask = tasks.named(JavaPlugin.PROCESS_TEST_RESOURCES_TASK_NAME);
211211

212212
quarkusGenerateCode.configure(task -> {
213-
task.dependsOn(resourcesTask);
214-
task.setCompileClasspath(
215-
project.getConfigurations().getByName(
216-
ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.NORMAL)));
213+
Configuration config = project.getConfigurations().getByName(
214+
ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.NORMAL));
215+
task.dependsOn(resourcesTask, config);
216+
task.setCompileClasspath(config);
217217
});
218218
quarkusGenerateCodeDev.configure(task -> {
219-
task.dependsOn(resourcesTask);
220-
task.setCompileClasspath(
221-
project.getConfigurations().getByName(
222-
ApplicationDeploymentClasspathBuilder
223-
.getBaseRuntimeConfigName(LaunchMode.DEVELOPMENT)));
219+
Configuration config = project.getConfigurations().getByName(
220+
ApplicationDeploymentClasspathBuilder
221+
.getBaseRuntimeConfigName(LaunchMode.DEVELOPMENT));
222+
task.dependsOn(resourcesTask, config);
223+
task.setCompileClasspath(config);
224224
});
225225
quarkusGenerateCodeTests.configure(task -> {
226-
task.dependsOn(resourcesTask);
227-
task.setCompileClasspath(
228-
project.getConfigurations().getByName(
229-
ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.TEST)));
226+
Configuration config = project.getConfigurations().getByName(
227+
ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.TEST));
228+
task.dependsOn(resourcesTask, config);
229+
task.setCompileClasspath(config);
230230
});
231231

232232
quarkusDev.configure(task -> {

devtools/gradle/gradle-extension-plugin/build.gradle

+3-6
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,11 @@ gradlePlugin {
2323
implementationClass = 'io.quarkus.extension.gradle.QuarkusExtensionPlugin'
2424
displayName = 'Quarkus Extension Plugin'
2525
description = 'Builds a Quarkus extension'
26+
tags.addAll(['quarkus', 'quarkusio', 'graalvm'])
2627
}
2728
}
28-
}
29-
30-
pluginBundle {
31-
website = 'https://quarkus.io/'
32-
vcsUrl = 'https://github.com/quarkusio/quarkus'
33-
tags = ['quarkus', 'quarkusio', 'graalvm']
29+
vcsUrl.set("https://github.com/quarkusio/quarkus")
30+
website.set("https://quarkus.io/")
3431
}
3532

3633
tasks.withType(Test) {

devtools/gradle/gradle-model/src/main/java/io/quarkus/gradle/dependency/ApplicationDeploymentClasspathBuilder.java

+42-30
Original file line numberDiff line numberDiff line change
@@ -66,38 +66,50 @@ public static void initConfigurations(Project project) {
6666
final ConfigurationContainer configContainer = project.getConfigurations();
6767

6868
// Custom configuration for dev mode
69-
configContainer.create(ToolingUtils.DEV_MODE_CONFIGURATION_NAME)
70-
.extendsFrom(configContainer.getByName(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME));
69+
configContainer.register(ToolingUtils.DEV_MODE_CONFIGURATION_NAME, config -> {
70+
config.extendsFrom(configContainer.getByName(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME));
71+
config.setCanBeConsumed(false);
72+
});
7173

7274
// Base runtime configurations for every launch mode
73-
configContainer.create(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.TEST))
74-
.extendsFrom(configContainer.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME));
75+
configContainer
76+
.register(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.TEST), config -> {
77+
config.extendsFrom(configContainer.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME));
78+
config.setCanBeConsumed(false);
79+
});
7580

76-
configContainer.create(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.NORMAL))
77-
.extendsFrom(configContainer.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME));
81+
configContainer
82+
.register(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.NORMAL), config -> {
83+
config.extendsFrom(configContainer.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME));
84+
config.setCanBeConsumed(false);
85+
});
7886

79-
configContainer.create(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.DEVELOPMENT))
80-
.extendsFrom(
81-
configContainer.getByName(ToolingUtils.DEV_MODE_CONFIGURATION_NAME),
82-
configContainer.getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME),
83-
configContainer.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME));
87+
configContainer
88+
.register(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.DEVELOPMENT), config -> {
89+
config.extendsFrom(
90+
configContainer.getByName(ToolingUtils.DEV_MODE_CONFIGURATION_NAME),
91+
configContainer.getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME),
92+
configContainer.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME));
93+
config.setCanBeConsumed(false);
94+
});
8495

8596
// enable the Panache annotation processor on the classpath, if it's found among the dependencies
86-
configContainer.getByName(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME)
87-
.withDependencies(annotationProcessors -> {
88-
Set<ResolvedArtifact> compileClasspathArtifacts = DependencyUtils
89-
.duplicateConfiguration(project, configContainer
90-
.getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME))
91-
.getResolvedConfiguration()
92-
.getResolvedArtifacts();
93-
for (ResolvedArtifact artifact : compileClasspathArtifacts) {
94-
if ("quarkus-panache-common".equals(artifact.getName())
95-
&& "io.quarkus".equals(artifact.getModuleVersion().getId().getGroup())) {
96-
project.getDependencies().add(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME,
97-
"io.quarkus:quarkus-panache-common:" + artifact.getModuleVersion().getId().getVersion());
98-
}
97+
configContainer.named(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME, config -> {
98+
config.withDependencies(annotationProcessors -> {
99+
Set<ResolvedArtifact> compileClasspathArtifacts = DependencyUtils
100+
.duplicateConfiguration(project, configContainer
101+
.getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME))
102+
.getResolvedConfiguration()
103+
.getResolvedArtifacts();
104+
for (ResolvedArtifact artifact : compileClasspathArtifacts) {
105+
if ("quarkus-panache-common".equals(artifact.getName())
106+
&& "io.quarkus".equals(artifact.getModuleVersion().getId().getGroup())) {
107+
project.getDependencies().add(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME,
108+
"io.quarkus:quarkus-panache-common:" + artifact.getModuleVersion().getId().getVersion());
99109
}
100-
});
110+
}
111+
});
112+
});
101113
}
102114

103115
private final Project project;
@@ -135,7 +147,7 @@ private void setUpPlatformConfiguration() {
135147
PlatformImportsImpl platformImports = ApplicationDeploymentClasspathBuilder.platformImports
136148
.computeIfAbsent(this.platformImportName, (ignored) -> new PlatformImportsImpl());
137149

138-
project.getConfigurations().create(this.platformConfigurationName, configuration -> {
150+
project.getConfigurations().register(this.platformConfigurationName, configuration -> {
139151
// Platform configuration is just implementation, filtered to platform dependencies
140152
ListProperty<Dependency> dependencyListProperty = project.getObjects().listProperty(Dependency.class);
141153
configuration.getDependencies()
@@ -184,16 +196,16 @@ private void setUpPlatformConfiguration() {
184196
}
185197

186198
private void setUpRuntimeConfiguration() {
187-
if (project.getConfigurations().findByName(this.runtimeConfigurationName) == null) {
188-
project.getConfigurations().create(this.runtimeConfigurationName, configuration -> configuration.extendsFrom(
199+
if (!project.getConfigurations().getNames().contains(this.runtimeConfigurationName)) {
200+
project.getConfigurations().register(this.runtimeConfigurationName, configuration -> configuration.extendsFrom(
189201
project.getConfigurations()
190202
.getByName(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(mode))));
191203
}
192204
}
193205

194206
private void setUpDeploymentConfiguration() {
195-
if (project.getConfigurations().findByName(this.deploymentConfigurationName) == null) {
196-
project.getConfigurations().create(this.deploymentConfigurationName, configuration -> {
207+
if (!project.getConfigurations().getNames().contains(this.deploymentConfigurationName)) {
208+
project.getConfigurations().register(this.deploymentConfigurationName, configuration -> {
197209
Configuration enforcedPlatforms = this.getPlatformConfiguration();
198210
configuration.extendsFrom(enforcedPlatforms);
199211
ListProperty<Dependency> dependencyListProperty = project.getObjects().listProperty(Dependency.class);
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
3+
distributionSha256Sum=948d1e4ccc2f6ae36cbfa087d827aaca51403acae5411e664a6000bb47946f22
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
5+
networkTimeout=10000
46
zipStoreBase=GRADLE_USER_HOME
57
zipStorePath=wrapper/dists

independent-projects/bootstrap/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
<graal-sdk.version>22.3.0</graal-sdk.version>
7272
<plexus-classworlds.version>2.6.0</plexus-classworlds.version> <!-- not actually used but ClassRealm class is referenced from the API used in BootstrapWagonConfigurator -->
7373
<smallrye-common.version>2.0.0</smallrye-common.version>
74-
<gradle-tooling.version>7.5.1</gradle-tooling.version>
74+
<gradle-tooling.version>8.0.1</gradle-tooling.version>
7575
<quarkus-fs-util.version>0.0.9</quarkus-fs-util.version>
7676
<org-crac.version>0.1.3</org-crac.version>
7777
<formatter-maven-plugin.version>2.22.0</formatter-maven-plugin.version>

independent-projects/tools/base-codestarts/src/main/resources/codestarts/quarkus/tooling/gradle-wrapper/codestart.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ language:
66
base:
77
data:
88
gradle:
9-
version: 7.5.1
9+
version: 8.0.1
1010
shared-data:
1111
buildtool:
1212
cli: ./gradlew

independent-projects/tools/devtools-testing/src/main/resources/fake-catalog.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@
388388
"supported-maven-versions": "[3.6.2,)",
389389
"proposed-maven-version": "3.8.7",
390390
"maven-wrapper-version": "3.1.1",
391-
"gradle-wrapper-version": "7.5.1"
391+
"gradle-wrapper-version": "8.0.1"
392392
}
393393
},
394394
"codestarts-artifacts": [

independent-projects/tools/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<!-- These properties are used by CreateProjectMojo to add the Maven Wrapper -->
4343
<proposed-maven-version>3.8.7</proposed-maven-version>
4444
<maven-wrapper.version>3.1.1</maven-wrapper.version>
45-
<gradle-wrapper.version>7.5.1</gradle-wrapper.version>
45+
<gradle-wrapper.version>8.0.1</gradle-wrapper.version>
4646

4747
<!-- These properties are needed in order for them to be resolvable by the generated projects -->
4848
<!-- Quarkus uses jboss-parent and it comes with 3.8.1-jboss-1, we don't want that in the templates -->
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
3+
distributionSha256Sum=948d1e4ccc2f6ae36cbfa087d827aaca51403acae5411e664a6000bb47946f22
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
5+
networkTimeout=10000
46
zipStoreBase=GRADLE_USER_HOME
57
zipStorePath=wrapper/dists
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
plugins {
2+
id 'io.quarkus'
3+
}
4+
5+
dependencies {
6+
implementation project(":common")
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import io.quarkus.gradle.tasks.QuarkusGenerateCode
2+
3+
plugins {
4+
id 'io.quarkus'
5+
}
6+
7+
dependencies {
8+
implementation files("../common/build/libs/common.jar")
9+
}
10+
11+
tasks.withType(QuarkusGenerateCode).configureEach { t -> t.dependsOn(project(":common").tasks.named("jar")) }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.acme.quarkus.sample;
2+
3+
import jakarta.inject.Inject;
4+
import jakarta.ws.rs.GET;
5+
import jakarta.ws.rs.Path;
6+
import jakarta.ws.rs.Produces;
7+
import jakarta.ws.rs.core.MediaType;
8+
9+
import org.acme.common.CommonBean;
10+
11+
@Path("/hello")
12+
public class HelloResource {
13+
14+
@Inject
15+
CommonBean common;
16+
17+
@GET
18+
@Produces(MediaType.TEXT_PLAIN)
19+
public String hello() {
20+
return "hello " + common.getName();
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Configuration file
2+
# key = value

integration-tests/gradle/src/main/resources/implementation-files/application/build.gradle

-7
This file was deleted.

integration-tests/gradle/src/main/resources/implementation-files/settings.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ pluginManagement {
1717
rootProject.name = 'quarkus-basic-multi-module-build'
1818

1919
include ':common'
20-
include ':application'
21-
20+
include ':application-files'
21+
include ':application-dep'

integration-tests/gradle/src/main/resources/inject-bean-from-test-config/library/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ configurations {
2828
}
2929

3030
task testJar (type: Jar) {
31-
classifier = 'test'
31+
archiveClassifier.set('test')
3232
from sourceSets.test.output
3333
}
3434

0 commit comments

Comments
 (0)