Skip to content

Commit a2f12d6

Browse files
committed
Add Convention Plugins for Spring Boot
1 parent 9142fd7 commit a2f12d6

13 files changed

+65
-55
lines changed

app/build.gradle.kts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
plugins { id("org.example.gradle.component.application") }
22

3-
application { mainClass = "org.example.product.app.Application" }
4-
53
dependencies {
64
implementation(projects.bespin)
75
implementation(projects.corellia)
@@ -12,8 +10,12 @@ dependencies {
1210
implementation(libs.guice)
1311
implementation(libs.guice.servlet)
1412
implementation(libs.slf4j.api)
13+
implementation(libs.spring.boot)
14+
implementation(libs.spring.boot.autoconfigure)
15+
implementation(libs.spring.context)
16+
implementation(libs.spring.web)
1517
runtimeOnly(libs.slf4j.simple)
16-
providedCompile(libs.jakarta.servlet.api)
18+
runtimeOnly(libs.spring.boot.starter.web)
1719

1820
mockApiImplementation(projects.app)
1921
mockApiImplementation(libs.guava)
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
package org.example.product.app;
22

3+
import static java.util.Objects.requireNonNull;
4+
5+
import java.io.BufferedReader;
36
import java.io.IOException;
4-
import java.io.PrintWriter;
5-
import javax.servlet.annotation.WebServlet;
6-
import javax.servlet.http.HttpServlet;
7-
import javax.servlet.http.HttpServletRequest;
8-
import javax.servlet.http.HttpServletResponse;
7+
import java.io.InputStreamReader;
8+
import org.springframework.web.bind.annotation.GetMapping;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
@RestController
12+
public class AppServlet {
913

10-
@WebServlet("/check")
11-
public class AppServlet extends HttpServlet {
12-
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
13-
res.setContentType("text/html");
14-
PrintWriter pw = res.getWriter();
15-
pw.println("<html><body>");
16-
pw.println("App is running...");
17-
pw.println("</body></html>");
18-
pw.close();
14+
@GetMapping("/")
15+
public String index() throws IOException {
16+
new MainModule().run();
17+
String version = new BufferedReader(
18+
new InputStreamReader(requireNonNull(AppServlet.class.getResourceAsStream("/version.txt"))))
19+
.readLine();
20+
return "<html><body>" + "App is running... !!!!" + "<br/>Version " + version + "</body></html>";
1921
}
2022
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package org.example.product.app;
22

3-
import java.io.IOException;
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
45

6+
@SpringBootApplication
57
public class Application {
68

7-
public static void main(String[] args) throws IOException {
8-
new MainModule().run();
9+
public static void main(String[] args) {
10+
SpringApplication.run(Application.class, args);
911
}
1012
}

gradle/libs.versions.toml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ org-reflections = "0.9.11"
1616
poi = "5.4.0"
1717
resteasy = "4.7.6.Final"
1818
slf4j = "1.7.36"
19-
solrj = "7.7.3"
19+
solrj = "7.7.3!!" # strict version, to downgrade the version Spring brings in
20+
spring-boot = "2.7.18"
2021
typesafeconfig = "0.1.0"
2122
velocity = "2.4.1"
2223
zookeeper = "3.9.3"
@@ -50,6 +51,12 @@ resteasy-jackson2-provider = { module = "org.jboss.resteasy:resteasy-jackson2-pr
5051
slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" }
5152
slf4j-simple = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" }
5253
solr-solrj = { module = "org.apache.solr:solr-solrj", version.ref = "solrj" }
54+
spring-boot = { module = "org.springframework.boot:spring-boot" }
55+
spring-boot-autoconfigure = { module = "org.springframework.boot:spring-boot-autoconfigure" }
56+
spring-boot-dependencies = { module = "org.springframework.boot:spring-boot-dependencies", version.ref = "spring-boot" }
57+
spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web" }
58+
spring-context = { module = "org.springframework:spring-context" }
59+
spring-web = { module = "org.springframework:spring-web" }
5360
typesafeconfig-guice = { module = "com.github.racc:typesafeconfig-guice", version.ref = "typesafeconfig" }
5461
velocity-engine-core = { module = "org.apache.velocity:velocity-engine-core", version.ref = "velocity" }
5562
zookeeper = { module = "org.apache.zookeeper:zookeeper", version.ref = "zookeeper" }

gradle/plugins/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ dependencies {
99
implementation("io.fuchs.gradle.classpath-collision-detector:classpath-collision-detector:1.0.0")
1010
implementation("org.cyclonedx:cyclonedx-gradle-plugin:2.3.1")
1111
implementation("org.gradlex:jvm-dependency-conflict-resolution:2.4")
12+
implementation("org.springframework.boot:spring-boot-gradle-plugin:2.7.18")
1213
}
1314

1415
testing.suites.named<JvmTestSuite>("test") {

gradle/plugins/src/main/kotlin/org.example.gradle.base.identity.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ plugins { id("org.gradle.base") }
22

33
// Set the group required to refer to a Module "from outside".
44
// I.e., when it is published or used in Included Builds.
5-
group = "org.example.product.java"
5+
group = "org.example.product.spring"
66

77
// Set the version from 'version.txt'
88
version = providers.fileContents(isolated.rootProject.projectDirectory.file("gradle/version.txt")).asText.getOrElse("")
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
plugins {
2-
id("org.gradle.application")
2+
id("org.gradle.java")
33
id("org.example.gradle.base.dependency-rules")
44
id("org.example.gradle.base.identity")
55
id("org.example.gradle.base.lifecycle")
66
id("org.example.gradle.check.dependencies")
77
id("org.example.gradle.check.format-gradle")
88
id("org.example.gradle.check.format-java")
9+
id("org.example.gradle.feature.spring-boot")
910
id("org.example.gradle.feature.checksum")
11+
id("org.example.gradle.feature.package-version-txt")
1012
id("org.example.gradle.feature.compile-java")
1113
id("org.example.gradle.feature.javadoc")
1214
id("org.example.gradle.feature.test")
1315
id("org.example.gradle.feature.test-end-to-end")
14-
id("org.example.gradle.feature.war")
1516
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
plugins { id("org.gradle.java") }
2+
3+
tasks.processResources { from(isolated.rootProject.projectDirectory.file("gradle/version.txt")) }
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
plugins {
2+
id("org.gradle.java")
3+
id("org.springframework.boot")
4+
id("org.example.gradle.base.dependency-rules")
5+
}
6+
7+
dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") }
8+
9+
configurations {
10+
productionRuntimeClasspath {
11+
extendsFrom(configurations["internal"])
12+
shouldResolveConsistentlyWith(configurations["mainRuntimeClasspath"])
13+
}
14+
developmentOnly {
15+
extendsFrom(configurations["internal"])
16+
shouldResolveConsistentlyWith(configurations["mainRuntimeClasspath"])
17+
}
18+
}

gradle/plugins/src/main/kotlin/org.example.gradle.feature.war.gradle.kts

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)