Skip to content

Commit b6324cd

Browse files
cdsapaloubyansky
authored andcommitted
declaring explicitly the build service in the QuarkusBuildTask
1 parent 5f14e1c commit b6324cd

File tree

14 files changed

+345
-18
lines changed

14 files changed

+345
-18
lines changed

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

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,6 @@ public void apply(Project project) {
139139
// Apply the `java` plugin
140140
project.getPluginManager().apply(JavaPlugin.class);
141141

142-
project.getGradle().getSharedServices().registerIfAbsent("forcedPropertiesService", ForcedPropertieBuildService.class,
143-
spec -> {
144-
});
145-
146142
registerModel();
147143

148144
// register extension
@@ -156,7 +152,11 @@ public void apply(Project project) {
156152

157153
private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
158154
TaskContainer tasks = project.getTasks();
159-
155+
String forcedPropertiesService = String.format("forcedPropertiesService-%s", project.getName());
156+
Provider<ForcedPropertieBuildService> serviceProvider = project.getGradle().getSharedServices().registerIfAbsent(
157+
forcedPropertiesService, ForcedPropertieBuildService.class,
158+
spec -> {
159+
});
160160
final String devRuntimeConfigName = ApplicationDeploymentClasspathBuilder
161161
.getBaseRuntimeConfigName(LaunchMode.DEVELOPMENT);
162162
final Configuration devRuntimeDependencies = project.getConfigurations().maybeCreate(devRuntimeConfigName);
@@ -236,14 +236,14 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
236236
});
237237
tasks.register(QUARKUS_SHOW_EFFECTIVE_CONFIG_TASK_NAME,
238238
QuarkusShowEffectiveConfig.class, task -> {
239-
configureQuarkusBuildTask(project, quarkusExt, task, quarkusBuildAppModelTask);
239+
configureQuarkusBuildTask(project, task, quarkusBuildAppModelTask, serviceProvider);
240240
task.setDescription("Show effective Quarkus build configuration.");
241241
});
242242

243243
TaskProvider<QuarkusBuildDependencies> quarkusBuildDependencies = tasks.register(QUARKUS_BUILD_DEP_TASK_NAME,
244244
QuarkusBuildDependencies.class,
245245
task -> {
246-
configureQuarkusBuildTask(project, quarkusExt, task, quarkusBuildAppModelTask);
246+
configureQuarkusBuildTask(project, task, quarkusBuildAppModelTask, serviceProvider);
247247

248248
task.getOutputs().doNotCacheIf("Dependencies are never cached", t -> true);
249249
task.getApplicationModel()
@@ -256,7 +256,7 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
256256
TaskProvider<QuarkusBuildCacheableAppParts> quarkusBuildCacheableAppParts = tasks.register(
257257
QUARKUS_BUILD_APP_PARTS_TASK_NAME,
258258
QuarkusBuildCacheableAppParts.class, task -> {
259-
configureQuarkusBuildTask(project, quarkusExt, task, quarkusBuildAppModelTask);
259+
configureQuarkusBuildTask(project, task, quarkusBuildAppModelTask, serviceProvider);
260260
task.dependsOn(quarkusGenerateCode);
261261
task.getOutputs().doNotCacheIf(
262262
"Not adding uber-jars, native binaries and mutable-jar package type to Gradle " +
@@ -272,7 +272,7 @@ public boolean isSatisfiedBy(Task t) {
272272
});
273273

274274
TaskProvider<QuarkusBuild> quarkusBuild = tasks.register(QUARKUS_BUILD_TASK_NAME, QuarkusBuild.class, build -> {
275-
configureQuarkusBuildTask(project, quarkusExt, build, quarkusBuildAppModelTask);
275+
configureQuarkusBuildTask(project, build, quarkusBuildAppModelTask, serviceProvider);
276276
build.dependsOn(quarkusBuildDependencies, quarkusBuildCacheableAppParts);
277277
build.getOutputs().doNotCacheIf(
278278
"Only collects and combines the outputs of " + QUARKUS_BUILD_APP_PARTS_TASK_NAME + " and "
@@ -296,7 +296,7 @@ public boolean isSatisfiedBy(Task t) {
296296

297297
tasks.register(IMAGE_BUILD_TASK_NAME, ImageBuild.class, task -> {
298298
task.dependsOn(quarkusRequiredExtension);
299-
configureQuarkusBuildTask(project, quarkusExt, task, quarkusBuildAppModelTask);
299+
configureQuarkusBuildTask(project, task, quarkusBuildAppModelTask, serviceProvider);
300300
task.getBuilderName().set(quarkusRequiredExtension.flatMap(ImageCheckRequirementsTask::getOutputFile));
301301
task.getOutputs().doNotCacheIf("Dependencies are never cached", t -> true);
302302
task.getApplicationModel()
@@ -306,7 +306,7 @@ public boolean isSatisfiedBy(Task t) {
306306

307307
tasks.register(IMAGE_PUSH_TASK_NAME, ImagePush.class, task -> {
308308
task.dependsOn(quarkusRequiredExtension);
309-
configureQuarkusBuildTask(project, quarkusExt, task, quarkusBuildAppModelTask);
309+
configureQuarkusBuildTask(project, task, quarkusBuildAppModelTask, serviceProvider);
310310
task.getBuilderName().set(quarkusRequiredExtension.flatMap(ImageCheckRequirementsTask::getOutputFile));
311311
task.getOutputs().doNotCacheIf("Dependencies are never cached", t -> true);
312312
task.getApplicationModel()
@@ -315,7 +315,7 @@ public boolean isSatisfiedBy(Task t) {
315315
});
316316

317317
tasks.register(DEPLOY_TASK_NAME, Deploy.class, task -> {
318-
configureQuarkusBuildTask(project, quarkusExt, task, quarkusBuildAppModelTask);
318+
configureQuarkusBuildTask(project, task, quarkusBuildAppModelTask, serviceProvider);
319319
task.getOutputs().doNotCacheIf("Dependencies are never cached", t -> true);
320320
task.getApplicationModel()
321321
.set(quarkusGenerateAppModelTask.flatMap(QuarkusApplicationModelTask::getApplicationModel));
@@ -326,7 +326,7 @@ public boolean isSatisfiedBy(Task t) {
326326
quarkusExt);
327327
TaskProvider<QuarkusRun> quarkusRun = tasks.register(QUARKUS_RUN_TASK_NAME, QuarkusRun.class,
328328
build -> {
329-
configureQuarkusBuildTask(project, quarkusExt, build, quarkusBuildAppModelTask);
329+
configureQuarkusBuildTask(project, build, quarkusBuildAppModelTask, serviceProvider);
330330
build.getOutputs().doNotCacheIf("Dependencies are never cached", t -> true);
331331
build.getApplicationModel()
332332
.set(quarkusGenerateAppModelTask.flatMap(QuarkusApplicationModelTask::getApplicationModel));
@@ -527,10 +527,13 @@ private static void configureApplicationModelTask(Project project, QuarkusApplic
527527
task.getApplicationModel().set(project.getLayout().getBuildDirectory().file(quarkusModelFile));
528528
}
529529

530-
private static void configureQuarkusBuildTask(Project project, QuarkusPluginExtension quarkusExt, QuarkusBuildTask task,
531-
TaskProvider<QuarkusApplicationModelTask> quarkusGenerateAppModelTask) {
530+
private static void configureQuarkusBuildTask(Project project, QuarkusBuildTask task,
531+
TaskProvider<QuarkusApplicationModelTask> quarkusGenerateAppModelTask,
532+
Provider<ForcedPropertieBuildService> serviceProvider) {
532533
task.getApplicationModel().set(quarkusGenerateAppModelTask.flatMap(QuarkusApplicationModelTask::getApplicationModel));
533534
SourceSet mainSourceSet = getSourceSet(project, SourceSet.MAIN_SOURCE_SET_NAME);
535+
task.getAdditionalForcedProperties().set(serviceProvider);
536+
task.usesService(serviceProvider);
534537
task.setCompileClasspath(mainSourceSet.getCompileClasspath().plus(mainSourceSet.getRuntimeClasspath())
535538
.plus(mainSourceSet.getAnnotationProcessorPath())
536539
.plus(mainSourceSet.getResources()));

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
import org.gradle.api.file.RegularFileProperty;
1818
import org.gradle.api.logging.LogLevel;
1919
import org.gradle.api.provider.Property;
20-
import org.gradle.api.services.ServiceReference;
2120
import org.gradle.api.tasks.Classpath;
2221
import org.gradle.api.tasks.Input;
2322
import org.gradle.api.tasks.InputFile;
23+
import org.gradle.api.tasks.Internal;
2424
import org.gradle.api.tasks.Nested;
2525
import org.gradle.api.tasks.PathSensitive;
2626
import org.gradle.api.tasks.PathSensitivity;
@@ -48,8 +48,8 @@ public abstract class QuarkusBuildTask extends QuarkusTask {
4848
static final String NATIVE_SOURCES = "native-sources";
4949
private final QuarkusPluginExtensionView extensionView;
5050

51-
@ServiceReference("forcedPropertiesService")
52-
abstract Property<ForcedPropertieBuildService> getAdditionalForcedProperties();
51+
@Internal
52+
public abstract Property<ForcedPropertieBuildService> getAdditionalForcedProperties();
5353

5454
QuarkusBuildTask(String description, boolean compatible) {
5555
super(description, compatible);
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
allprojects {
2+
3+
group = "org.acme"
4+
version = "1.0.0-SNAPSHOT"
5+
6+
repositories {
7+
mavenLocal {
8+
content {
9+
includeGroupByRegex("io.quarkus.*")
10+
includeGroup("org.hibernate.orm")
11+
}
12+
}
13+
mavenCentral()
14+
}
15+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Gradle properties
2+
3+
quarkusPlatformArtifactId=quarkus-bom
4+
quarkusPlatformGroupId=io.quarkus
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
plugins {
2+
`java-library`
3+
id("io.quarkus")
4+
id("com.github.ben-manes.versions") version "0.51.0"
5+
6+
}
7+
val quarkusPlatformGroupId: String by project
8+
val quarkusPlatformArtifactId: String by project
9+
val quarkusPlatformVersion: String by project
10+
11+
dependencies {
12+
implementation(enforcedPlatform("$quarkusPlatformGroupId:$quarkusPlatformArtifactId:$quarkusPlatformVersion"))
13+
api("io.quarkus:quarkus-resteasy")
14+
api("io.quarkus:quarkus-resteasy-jackson")
15+
api("io.quarkus:quarkus-arc")
16+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!build/*-runner
3+
!build/*-runner.jar
4+
!build/lib/*
5+
!build/quarkus-app/*
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
plugins {
2+
`java-library`
3+
id("io.quarkus")
4+
id("com.github.ben-manes.versions") version "0.51.0"
5+
}
6+
val quarkusPlatformGroupId: String by project
7+
val quarkusPlatformArtifactId: String by project
8+
val quarkusPlatformVersion: String by project
9+
10+
val javaVersion = "17"
11+
12+
dependencies {
13+
implementation(enforcedPlatform("$quarkusPlatformGroupId:$quarkusPlatformArtifactId:$quarkusPlatformVersion"))
14+
implementation(project(":modA"))
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.acme;
2+
3+
import jakarta.ws.rs.GET;
4+
import jakarta.ws.rs.Path;
5+
import jakarta.ws.rs.Produces;
6+
import jakarta.ws.rs.core.MediaType;
7+
8+
@Path("/hello")
9+
public class GreetingResource {
10+
11+
@GET
12+
@Produces(MediaType.TEXT_PLAIN)
13+
public String hello() {
14+
return "foo bar";
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>code-with-quarkus - 1.0.0-SNAPSHOT</title>
6+
<style>
7+
h1, h2, h3, h4, h5, h6 {
8+
margin-bottom: 0.5rem;
9+
font-weight: 400;
10+
line-height: 1.5;
11+
}
12+
13+
h1 {
14+
font-size: 2.5rem;
15+
}
16+
17+
h2 {
18+
font-size: 2rem
19+
}
20+
21+
h3 {
22+
font-size: 1.75rem
23+
24+
}
25+
26+
h4 {
27+
font-size: 1.5rem
28+
}
29+
30+
h5 {
31+
font-size: 1.25rem
32+
}
33+
34+
h6 {
35+
font-size: 1rem
36+
}
37+
38+
.lead {
39+
font-weight: 300;
40+
font-size: 2rem;
41+
}
42+
43+
.banner {
44+
font-size: 2.7rem;
45+
margin: 0;
46+
padding: 2rem 1rem;
47+
background-color: #0d1c2c;
48+
color: white;
49+
}
50+
51+
body {
52+
margin: 0;
53+
font-family: -apple-system, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
54+
}
55+
56+
code {
57+
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
58+
font-size: 87.5%;
59+
color: #e83e8c;
60+
word-break: break-word;
61+
}
62+
63+
.left-column {
64+
padding: .75rem;
65+
max-width: 75%;
66+
min-width: 55%;
67+
}
68+
69+
.right-column {
70+
padding: .75rem;
71+
max-width: 25%;
72+
}
73+
74+
.container {
75+
display: flex;
76+
width: 100%;
77+
}
78+
79+
li {
80+
margin: 0.75rem;
81+
}
82+
83+
.right-section {
84+
margin-left: 1rem;
85+
padding-left: 0.5rem;
86+
}
87+
88+
.right-section h3 {
89+
padding-top: 0;
90+
font-weight: 200;
91+
}
92+
93+
.right-section ul {
94+
border-left: 0.3rem solid #71aeef;
95+
list-style-type: none;
96+
padding-left: 0;
97+
}
98+
99+
.example-code {
100+
border-left: 0.3rem solid #71aeef;
101+
padding-left: 10px;
102+
}
103+
104+
.example-code h3 {
105+
font-weight: 200;
106+
}
107+
</style>
108+
</head>
109+
<body>
110+
111+
<div class="banner lead">
112+
Your new Cloud-Native application is ready!
113+
</div>
114+
115+
<div class="container">
116+
<div class="left-column">
117+
<p class="lead"> Congratulations, you have created a new Quarkus cloud application.</p>
118+
119+
<h2>What is this page?</h2>
120+
121+
<p>This page is served by Quarkus. The source is in
122+
<code>src/main/resources/META-INF/resources/index.html</code>.</p>
123+
124+
<h2>What are your next steps?</h2>
125+
126+
<p>If not already done, run the application in <em>dev mode</em> using: <code>./gradlew quarkusDev</code>.
127+
</p>
128+
<ul>
129+
<li>Your static assets are located in <code>src/main/resources/META-INF/resources</code>.</li>
130+
<li>Configure your application in <code>src/main/resources/application.properties</code>.</li>
131+
<li>Quarkus now ships with a <a href="/q/dev/">Dev UI</a> (available in dev mode only)</li>
132+
<li>Play with the getting started example code located in <code>src/main/java</code>:</li>
133+
</ul>
134+
<div class="example-code">
135+
<h3>RESTEasy JAX-RS example</h3>
136+
<p>REST is easy peasy with this Hello World RESTEasy resource.</p>
137+
<p><code>@Path: <a href="/hello-resteasy" class="path-link" target="_blank">/hello-resteasy</a></code></p>
138+
<p><a href="https://quarkus.io/guides/getting-started#the-jax-rs-resources" class="guide-link" target="_blank">Related guide section...</a></p>
139+
</div>
140+
<div class="example-code">
141+
<h3>RESTEasy JSON serialisation using Jackson</h3>
142+
<p>This example demonstrate RESTEasy JSON serialisation by letting you list, add and remove quark types from a list. Quarked!</p>
143+
<p><code>@Path: <a href="/resteasy-jackson/quarks/" class="path-link" target="_blank">/resteasy-jackson/quarks/</a></code></p>
144+
<p><a href="https://quarkus.io/guides/rest-json#creating-your-first-json-rest-service" class="guide-link" target="_blank">Related guide section...</a></p>
145+
</div>
146+
147+
</div>
148+
<div class="right-column">
149+
<div class="right-section">
150+
<h3>Application</h3>
151+
<ul>
152+
<li>GroupId: <code>org.acme</code></li>
153+
<li>ArtifactId: <code>code-with-quarkus</code></li>
154+
<li>Version: <code>1.0.0-SNAPSHOT</code></li>
155+
<li>Quarkus Version: <code>1.12.2.Final</code></li>
156+
</ul>
157+
</div>
158+
<div class="right-section">
159+
<h3>Do you like Quarkus?</h3>
160+
<ul>
161+
<li>Go give it a star on <a href="https://github.com/quarkusio/quarkus">GitHub</a>.</li>
162+
</ul>
163+
</div>
164+
<div class="right-section">
165+
<h3>Selected extensions guides</h3>
166+
<ul>
167+
<li title="REST endpoint framework implementing JAX-RS and more"><a href="https://quarkus.io/guides/rest-json" target="_blank">RESTEasy JAX-RS guide</a></li>
168+
</ul>
169+
</div>
170+
<div class="right-section">
171+
<h3>More reading</h3>
172+
<ul>
173+
<li><a href="https://quarkus.io/guides/gradle-tooling" target="_blank">Setup your IDE</a></li>
174+
<li><a href="https://quarkus.io/guides/getting-started" target="_blank">Getting started</a></li>
175+
<li><a href="https://quarkus.io/guides/" target="_blank">All guides</a></li>
176+
<li><a href="https://quarkus.io" target="_blank">Quarkus Web Site</a></li>
177+
</ul>
178+
</div>
179+
</div>
180+
</div>
181+
</body>
182+
</html>

integration-tests/gradle/src/main/resources/quarkus-plugin-in-multiple-modules/modB/src/main/resources/application.properties

Whitespace-only changes.

0 commit comments

Comments
 (0)