Skip to content

Commit 7ad8428

Browse files
committed
Add Convention Plugins for Spring Boot (Kotlin variant)
1 parent 8744bd5 commit 7ad8428

13 files changed

+70
-51
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)
@@ -13,8 +11,12 @@ dependencies {
1311
implementation(libs.guice.servlet)
1412
implementation(libs.kotlin.stdlib)
1513
implementation(libs.slf4j.api)
14+
implementation(libs.spring.boot)
15+
implementation(libs.spring.boot.autoconfigure)
16+
implementation(libs.spring.context)
17+
implementation(libs.spring.web)
1618
runtimeOnly(libs.slf4j.simple)
17-
providedCompile(libs.jakarta.servlet.api)
19+
runtimeOnly(libs.spring.boot.starter.web)
1820

1921
mockApiApi(libs.guava)
2022
mockApiImplementation(projects.app)
Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
package org.example.product.app
22

3-
import javax.servlet.annotation.WebServlet
4-
import javax.servlet.http.HttpServlet
5-
import javax.servlet.http.HttpServletRequest
6-
import javax.servlet.http.HttpServletResponse
3+
import java.io.BufferedReader
4+
import java.io.InputStreamReader
5+
import java.util.*
6+
import org.springframework.web.bind.annotation.GetMapping
7+
import org.springframework.web.bind.annotation.RestController
78

8-
@WebServlet("/check")
9-
class AppServlet : HttpServlet() {
9+
@RestController
10+
class AppServlet {
1011

11-
public override fun doGet(req: HttpServletRequest, res: HttpServletResponse) {
12-
res.contentType = "text/html"
13-
val pw = res.writer
14-
pw.println("<html><body>")
15-
pw.println("App is running...")
16-
pw.println("</body></html>")
17-
pw.close()
12+
@GetMapping("/")
13+
fun index(): String {
14+
MainModule().run()
15+
val version =
16+
BufferedReader(
17+
InputStreamReader(
18+
Objects.requireNonNull(
19+
AppServlet::class.java.getResourceAsStream("/version.txt")
20+
)
21+
)
22+
)
23+
.readLine()
24+
return "<html><body>App is running... !!!!<br/>Version $version</body></html>"
1825
}
1926
}
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package org.example.product.app
22

3+
import org.springframework.boot.SpringApplication
4+
import org.springframework.boot.autoconfigure.SpringBootApplication
5+
36
fun main(args: Array<String>) {
4-
MainModule().run()
7+
SpringApplication.run(Application::class.java, *args)
58
}
9+
10+
@SpringBootApplication open class Application

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 = "3.5.3"
2021
typesafeconfig = "0.1.0"
2122
velocity = "2.4.1"
2223
zookeeper = "3.9.3"
@@ -52,6 +53,12 @@ resteasy-jackson2-provider = { module = "org.jboss.resteasy:resteasy-jackson2-pr
5253
slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" }
5354
slf4j-simple = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" }
5455
solr-solrj = { module = "org.apache.solr:solr-solrj", version.ref = "solrj" }
56+
spring-boot = { module = "org.springframework.boot:spring-boot" }
57+
spring-boot-autoconfigure = { module = "org.springframework.boot:spring-boot-autoconfigure" }
58+
spring-boot-dependencies = { module = "org.springframework.boot:spring-boot-dependencies", version.ref = "spring-boot" }
59+
spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web" }
60+
spring-context = { module = "org.springframework:spring-context" }
61+
spring-web = { module = "org.springframework:spring-web" }
5562
typesafeconfig-guice = { module = "com.github.racc:typesafeconfig-guice", version.ref = "typesafeconfig" }
5663
velocity-engine-core = { module = "org.apache.velocity:velocity-engine-core", version.ref = "velocity" }
5764
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
@@ -10,6 +10,7 @@ dependencies {
1010
implementation("org.cyclonedx:cyclonedx-gradle-plugin:2.3.1")
1111
implementation("org.gradlex:jvm-dependency-conflict-resolution:2.4")
1212
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.0")
13+
implementation("org.springframework.boot:spring-boot-gradle-plugin:3.5.3")
1314
}
1415

1516
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.springkt"
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,17 +1,18 @@
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")
99
id("org.example.gradle.check.format-kotlin")
10+
id("org.example.gradle.feature.spring-boot")
1011
id("org.example.gradle.feature.checksum")
12+
id("org.example.gradle.feature.package-version-txt")
1113
id("org.example.gradle.feature.compile-java")
1214
id("org.example.gradle.feature.compile-kotlin")
1315
id("org.example.gradle.feature.javadoc")
1416
id("org.example.gradle.feature.test")
1517
id("org.example.gradle.feature.test-end-to-end")
16-
id("org.example.gradle.feature.war")
1718
}
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)