Skip to content

Commit 4e8e6f6

Browse files
committed
feat(kotlin-spring): add SB4 templates for all libraries
1 parent 445d0a2 commit 4e8e6f6

6 files changed

Lines changed: 855 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2+
3+
group = "{{groupId}}"
4+
version = "{{artifactVersion}}"
5+
java.sourceCompatibility = JavaVersion.VERSION_17
6+
7+
repositories {
8+
mavenCentral()
9+
}
10+
11+
tasks.withType<KotlinCompile> {
12+
kotlinOptions.jvmTarget = "17"
13+
}
14+
15+
{{#interfaceOnly}}
16+
tasks.bootJar {
17+
enabled = false
18+
}
19+
20+
{{/interfaceOnly}}
21+
plugins {
22+
val kotlinVersion = "2.2.0"
23+
id("org.jetbrains.kotlin.jvm") version kotlinVersion
24+
id("org.jetbrains.kotlin.plugin.jpa") version kotlinVersion
25+
id("org.jetbrains.kotlin.plugin.spring") version kotlinVersion
26+
id("org.springframework.boot") version "4.0.1"
27+
id("io.spring.dependency-management") version "1.1.7"
28+
}
29+
30+
dependencies {
31+
{{#reactive}} val kotlinxCoroutinesVersion = "1.10.1"
32+
{{/reactive}} implementation("org.jetbrains.kotlin:kotlin-stdlib")
33+
implementation("org.jetbrains.kotlin:kotlin-reflect"){{^reactive}}
34+
implementation("org.springframework.boot:spring-boot-starter-webmvc"){{/reactive}}{{#reactive}}
35+
implementation("org.springframework.boot:spring-boot-starter-webflux")
36+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion")
37+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion"){{/reactive}}{{#springDocDocumentationProvider}}{{#useSwaggerUI}}
38+
implementation("org.springdoc:springdoc-openapi-starter-{{#reactive}}webflux{{/reactive}}{{^reactive}}webmvc{{/reactive}}-ui:2.8.6"){{/useSwaggerUI}}{{^useSwaggerUI}}
39+
implementation("org.springdoc:springdoc-openapi-starter-{{#reactive}}webflux{{/reactive}}{{^reactive}}webmvc{{/reactive}}-api:2.8.6"){{/useSwaggerUI}}{{/springDocDocumentationProvider}}{{#useSwaggerUI}}{{^springDocDocumentationProvider}}
40+
implementation("org.webjars:swagger-ui:5.17.14")
41+
implementation("org.webjars:webjars-locator-core"){{/springDocDocumentationProvider}}{{/useSwaggerUI}}{{^springDocDocumentationProvider}}{{#swagger1AnnotationLibrary}}
42+
implementation("io.swagger:swagger-annotations:1.6.6"){{/swagger1AnnotationLibrary}}{{#swagger2AnnotationLibrary}}
43+
implementation("io.swagger.core.v3:swagger-annotations:2.2.28"){{/swagger2AnnotationLibrary}}{{/springDocDocumentationProvider}}
44+
45+
implementation("com.google.code.findbugs:jsr305:3.0.2")
46+
{{#useJackson3}}
47+
implementation("tools.jackson.dataformat:jackson-dataformat-yaml")
48+
implementation("tools.jackson.dataformat:jackson-dataformat-xml")
49+
implementation("tools.jackson.module:jackson-module-kotlin")
50+
{{/useJackson3}}
51+
{{^useJackson3}}
52+
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
53+
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
54+
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
55+
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
56+
{{/useJackson3}}
57+
implementation("org.springframework.data:spring-data-commons")
58+
{{#useBeanValidation}}
59+
implementation("jakarta.validation:jakarta.validation-api"){{/useBeanValidation}}
60+
implementation("jakarta.annotation:jakarta.annotation-api:3.0.0")
61+
62+
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
63+
testImplementation("org.springframework.boot:spring-boot-starter-test") {
64+
exclude(module = "junit")
65+
}
66+
{{#reactive}}
67+
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion")
68+
{{/reactive}}
69+
}
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
2+
<modelVersion>4.0.0</modelVersion>
3+
<groupId>{{groupId}}</groupId>
4+
<artifactId>{{artifactId}}</artifactId>
5+
<packaging>jar</packaging>
6+
<name>{{artifactId}}</name>
7+
<version>{{artifactVersion}}</version>
8+
<properties>{{#reactive}}
9+
<kotlinx-coroutines.version>1.10.1</kotlinx-coroutines.version>{{/reactive}}{{#springDocDocumentationProvider}}{{#useSwaggerUI}}
10+
<springdoc-openapi.version>2.8.6</springdoc-openapi.version>{{/useSwaggerUI}}{{/springDocDocumentationProvider}}{{#useSwaggerUI}}{{^springDocDocumentationProvider}}
11+
<swagger-ui.version>5.17.14</swagger-ui.version>{{/springDocDocumentationProvider}}{{/useSwaggerUI}}{{^springDocDocumentationProvider}}{{#swagger1AnnotationLibrary}}
12+
<swagger-annotations.version>1.6.6</swagger-annotations.version>{{/swagger1AnnotationLibrary}}{{#swagger2AnnotationLibrary}}
13+
<swagger-annotations.version>2.2.28</swagger-annotations.version>{{/swagger2AnnotationLibrary}}{{/springDocDocumentationProvider}}
14+
<findbugs-jsr305.version>3.0.2</findbugs-jsr305.version>
15+
<jakarta-annotation.version>3.0.0</jakarta-annotation.version>
16+
<kotlin-test-junit5.version>2.2.0</kotlin-test-junit5.version>
17+
18+
<kotlin.version>2.2.0</kotlin.version>
19+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
20+
</properties>
21+
<parent>
22+
<groupId>org.springframework.boot</groupId>
23+
<artifactId>spring-boot-starter-parent</artifactId>
24+
<version>4.0.1</version>
25+
</parent>
26+
<build>
27+
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
28+
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
29+
<plugins>{{^interfaceOnly}}
30+
<plugin>
31+
<groupId>org.springframework.boot</groupId>
32+
<artifactId>spring-boot-maven-plugin</artifactId>
33+
<executions>
34+
<execution>
35+
<goals>
36+
<goal>repackage</goal>
37+
</goals>
38+
</execution>
39+
</executions>
40+
</plugin>{{/interfaceOnly}}
41+
{{#interfaceOnly}}<plugin>
42+
<groupId>org.apache.maven.plugins</groupId>
43+
<artifactId>maven-source-plugin</artifactId>
44+
<executions>
45+
<execution>
46+
<id>attach-sources</id>
47+
<goals>
48+
<goal>jar</goal>
49+
</goals>
50+
</execution>
51+
</executions>
52+
</plugin>{{/interfaceOnly}}
53+
<plugin>
54+
<artifactId>kotlin-maven-plugin</artifactId>
55+
<groupId>org.jetbrains.kotlin</groupId>
56+
<version>${kotlin.version}</version>
57+
<configuration>
58+
<compilerPlugins>
59+
<plugin>spring</plugin>
60+
</compilerPlugins>
61+
<jvmTarget>17</jvmTarget>
62+
</configuration>
63+
<executions>
64+
<execution>
65+
<id>compile</id>
66+
<phase>compile</phase>
67+
<goals>
68+
<goal>compile</goal>
69+
</goals>
70+
</execution>
71+
<execution>
72+
<id>test-compile</id>
73+
<phase>test-compile</phase>
74+
<goals>
75+
<goal>test-compile</goal>
76+
</goals>
77+
</execution>
78+
</executions>
79+
<dependencies>
80+
<dependency>
81+
<groupId>org.jetbrains.kotlin</groupId>
82+
<artifactId>kotlin-maven-allopen</artifactId>
83+
<version>${kotlin.version}</version>
84+
</dependency>
85+
</dependencies>
86+
</plugin>
87+
</plugins>
88+
</build>
89+
<dependencies>
90+
<dependency>
91+
<groupId>org.jetbrains.kotlin</groupId>
92+
<artifactId>kotlin-stdlib</artifactId>
93+
<version>${kotlin.version}</version>
94+
</dependency>
95+
<dependency>
96+
<groupId>org.jetbrains.kotlin</groupId>
97+
<artifactId>kotlin-reflect</artifactId>
98+
<version>${kotlin.version}</version>
99+
</dependency>{{^reactive}}
100+
<dependency>
101+
<groupId>org.springframework.boot</groupId>
102+
<artifactId>spring-boot-starter-webmvc</artifactId>
103+
</dependency>{{/reactive}}{{#reactive}}
104+
<dependency>
105+
<groupId>org.springframework.boot</groupId>
106+
<artifactId>spring-boot-starter-webflux</artifactId>
107+
</dependency>
108+
<dependency>
109+
<groupId>org.jetbrains.kotlinx</groupId>
110+
<artifactId>kotlinx-coroutines-core</artifactId>
111+
<version>${kotlinx-coroutines.version}</version>
112+
</dependency>
113+
<dependency>
114+
<groupId>org.jetbrains.kotlinx</groupId>
115+
<artifactId>kotlinx-coroutines-reactor</artifactId>
116+
<version>${kotlinx-coroutines.version}</version>
117+
</dependency>{{/reactive}}
118+
<dependency>
119+
<groupId>org.springframework.data</groupId>
120+
<artifactId>spring-data-commons</artifactId>
121+
</dependency>
122+
123+
{{#springDocDocumentationProvider}}
124+
<!--SpringDoc dependencies -->{{#useSwaggerUI}}
125+
<dependency>
126+
<groupId>org.springdoc</groupId>
127+
<artifactId>springdoc-openapi-starter-{{#reactive}}webflux{{/reactive}}{{^reactive}}webmvc{{/reactive}}-ui</artifactId>
128+
<version>${springdoc-openapi.version}</version>
129+
</dependency>{{/useSwaggerUI}}{{^useSwaggerUI}}
130+
<dependency>
131+
<groupId>org.springdoc</groupId>
132+
<artifactId>springdoc-openapi-{{#reactive}}webflux{{/reactive}}{{^reactive}}webmvc{{/reactive}}-core</artifactId>
133+
<version>${springdoc-openapi.version}</version>
134+
</dependency>{{/useSwaggerUI}}{{/springDocDocumentationProvider}}{{#useSwaggerUI}}{{^springDocDocumentationProvider}}
135+
<dependency>
136+
<groupId>org.webjars</groupId>
137+
<artifactId>swagger-ui</artifactId>
138+
<version>${swagger-ui.version}</version>
139+
</dependency>
140+
<dependency>
141+
<groupId>org.webjars</groupId>
142+
<artifactId>webjars-locator-core</artifactId>
143+
</dependency>{{/springDocDocumentationProvider}}{{/useSwaggerUI}}{{^springDocDocumentationProvider}}{{#swagger1AnnotationLibrary}}
144+
<dependency>
145+
<groupId>io.swagger</groupId>
146+
<artifactId>swagger-annotations</artifactId>
147+
<version>${swagger-annotations.version}</version>
148+
</dependency>{{/swagger1AnnotationLibrary}}{{#swagger2AnnotationLibrary}}
149+
<dependency>
150+
<groupId>io.swagger.core.v3</groupId>
151+
<artifactId>swagger-annotations</artifactId>
152+
<version>${swagger-annotations.version}</version>
153+
</dependency>{{/swagger2AnnotationLibrary}}{{/springDocDocumentationProvider}}
154+
155+
<!-- @Nullable annotation -->
156+
<dependency>
157+
<groupId>com.google.code.findbugs</groupId>
158+
<artifactId>jsr305</artifactId>
159+
<version>${findbugs-jsr305.version}</version>
160+
</dependency>
161+
<dependency>
162+
<groupId>{{jacksonPackage}}.dataformat</groupId>
163+
<artifactId>jackson-dataformat-yaml</artifactId>
164+
</dependency>
165+
<dependency>
166+
<groupId>{{jacksonPackage}}.dataformat</groupId>
167+
<artifactId>jackson-dataformat-xml</artifactId>
168+
</dependency>{{^useJackson3}}
169+
<dependency>
170+
<groupId>com.fasterxml.jackson.datatype</groupId>
171+
<artifactId>jackson-datatype-jsr310</artifactId>
172+
</dependency>{{/useJackson3}}
173+
<dependency>
174+
<groupId>{{jacksonPackage}}.module</groupId>
175+
<artifactId>jackson-module-kotlin</artifactId>
176+
</dependency>
177+
{{#useBeanValidation}}
178+
<!-- Bean Validation API support -->
179+
<dependency>
180+
<groupId>jakarta.validation</groupId>
181+
<artifactId>jakarta.validation-api</artifactId>
182+
</dependency>{{/useBeanValidation}}
183+
<dependency>
184+
<groupId>jakarta.annotation</groupId>
185+
<artifactId>jakarta.annotation-api</artifactId>
186+
<version>${jakarta-annotation.version}</version>
187+
<scope>provided</scope>
188+
</dependency>
189+
<dependency>
190+
<groupId>org.jetbrains.kotlin</groupId>
191+
<artifactId>kotlin-test-junit5</artifactId>
192+
<version>${kotlin-test-junit5.version}</version>
193+
<scope>test</scope>
194+
</dependency>
195+
</dependencies>
196+
</project>
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2+
3+
group = "{{groupId}}"
4+
version = "{{artifactVersion}}"
5+
java.sourceCompatibility = JavaVersion.VERSION_17
6+
7+
repositories {
8+
mavenCentral()
9+
}
10+
11+
tasks.withType<KotlinCompile> {
12+
kotlinOptions.jvmTarget = "17"
13+
}
14+
15+
plugins {
16+
val kotlinVersion = "2.2.0"
17+
id("org.jetbrains.kotlin.jvm") version kotlinVersion
18+
id("org.jetbrains.kotlin.plugin.jpa") version kotlinVersion
19+
id("org.jetbrains.kotlin.plugin.spring") version kotlinVersion
20+
id("org.springframework.boot") version "4.0.1"
21+
id("io.spring.dependency-management") version "1.1.7"
22+
}
23+
24+
tasks.getByName("bootJar") {
25+
enabled = false
26+
}
27+
28+
tasks.getByName("jar") {
29+
enabled = true
30+
}
31+
32+
dependencyManagement {
33+
imports {
34+
mavenBom("org.springframework.cloud:spring-cloud-dependencies:2025.1.0")
35+
}
36+
}
37+
38+
dependencies {
39+
{{#reactive}} val kotlinxCoroutinesVersion = "1.10.1"
40+
{{/reactive}} implementation("org.jetbrains.kotlin:kotlin-stdlib")
41+
implementation("org.jetbrains.kotlin:kotlin-reflect"){{^reactive}}
42+
implementation("org.springframework.boot:spring-boot-starter-webmvc"){{/reactive}}{{#reactive}}
43+
implementation("org.springframework.boot:spring-boot-starter-webflux")
44+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion")
45+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutinesVersion"){{/reactive}}{{#springDocDocumentationProvider}}{{#useSwaggerUI}}
46+
implementation("org.springdoc:springdoc-openapi-starter-{{#reactive}}webflux{{/reactive}}{{^reactive}}webmvc{{/reactive}}-ui:2.8.6"){{/useSwaggerUI}}{{^useSwaggerUI}}
47+
implementation("org.springdoc:springdoc-openapi-starter-{{#reactive}}webflux{{/reactive}}{{^reactive}}webmvc{{/reactive}}-api:2.8.6"){{/useSwaggerUI}}{{/springDocDocumentationProvider}}{{#useSwaggerUI}}{{^springDocDocumentationProvider}}
48+
implementation("org.webjars:swagger-ui:5.17.14")
49+
implementation("org.webjars:webjars-locator-core"){{/springDocDocumentationProvider}}{{/useSwaggerUI}}{{^springDocDocumentationProvider}}{{#swagger1AnnotationLibrary}}
50+
implementation("io.swagger:swagger-annotations:1.6.6"){{/swagger1AnnotationLibrary}}{{#swagger2AnnotationLibrary}}
51+
implementation("io.swagger.core.v3:swagger-annotations:2.2.28"){{/swagger2AnnotationLibrary}}{{/springDocDocumentationProvider}}
52+
53+
implementation("com.google.code.findbugs:jsr305:3.0.2")
54+
{{#useJackson3}}
55+
implementation("tools.jackson.dataformat:jackson-dataformat-yaml")
56+
implementation("tools.jackson.dataformat:jackson-dataformat-xml")
57+
implementation("tools.jackson.module:jackson-module-kotlin")
58+
{{/useJackson3}}
59+
{{^useJackson3}}
60+
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
61+
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
62+
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
63+
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
64+
{{/useJackson3}}
65+
66+
implementation("org.springframework.cloud:spring-cloud-starter-openfeign"){{#hasAuthMethods}}
67+
implementation("org.springframework.cloud:spring-cloud-starter-oauth2:2.2.5.RELEASE"){{/hasAuthMethods}}
68+
69+
{{#useBeanValidation}}
70+
implementation("jakarta.validation:jakarta.validation-api"){{/useBeanValidation}}
71+
implementation("jakarta.annotation:jakarta.annotation-api:3.0.0")
72+
73+
}

0 commit comments

Comments
 (0)