176 lines
5.9 KiB
XML
176 lines
5.9 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<parent>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-parent</artifactId>
|
|
<version>4.1.1</version>
|
|
<relativePath/>
|
|
</parent>
|
|
|
|
<groupId>com.ankurm</groupId>
|
|
<artifactId>kotlin</artifactId>
|
|
<version>1.0.0</version>
|
|
<name>kotlin</name>
|
|
<description>Kotlin with Spring Boot 4.1: null safety/JSpecify interop, allopen/noarg, and coroutines in controllers</description>
|
|
<packaging>jar</packaging>
|
|
|
|
<properties>
|
|
<java.version>25</java.version>
|
|
<!-- Spring Boot 4.1.1's own managed version (spring-boot-dependencies POM), not the latest
|
|
Kotlin GA (2.4.20 at time of writing): see the post for why that distinction matters. -->
|
|
<kotlin.version>2.3.21</kotlin.version>
|
|
<kotlin.compiler.jvmTarget>25</kotlin.compiler.jvmTarget>
|
|
<kotlinx-coroutines.version>1.10.2</kotlinx-coroutines.version>
|
|
<jackson-module-kotlin.version>2.22.3</jackson-module-kotlin.version>
|
|
</properties>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-webmvc</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-validation</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.h2database</groupId>
|
|
<artifactId>h2</artifactId>
|
|
<scope>runtime</scope>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.jetbrains.kotlin</groupId>
|
|
<artifactId>kotlin-reflect</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.jetbrains.kotlin</groupId>
|
|
<artifactId>kotlin-stdlib</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>com.fasterxml.jackson.module</groupId>
|
|
<artifactId>jackson-module-kotlin</artifactId>
|
|
<version>${jackson-module-kotlin.version}</version>
|
|
</dependency>
|
|
|
|
<!-- Coroutines: needed on the classpath even under plain Tomcat/MVC; see the post
|
|
for why suspend/Flow controller methods still go through this reactive bridge. -->
|
|
<dependency>
|
|
<groupId>org.jetbrains.kotlinx</groupId>
|
|
<artifactId>kotlinx-coroutines-core</artifactId>
|
|
<version>${kotlinx-coroutines.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.jetbrains.kotlinx</groupId>
|
|
<artifactId>kotlinx-coroutines-reactor</artifactId>
|
|
<version>${kotlinx-coroutines.version}</version>
|
|
</dependency>
|
|
|
|
<!-- JSpecify, explicitly, so the legacy/annotated Java interop demo compiles against the
|
|
exact same annotations Spring Framework 7 itself uses. -->
|
|
<dependency>
|
|
<groupId>org.jspecify</groupId>
|
|
<artifactId>jspecify</artifactId>
|
|
<version>1.0.0</version>
|
|
</dependency>
|
|
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.jetbrains.kotlin</groupId>
|
|
<artifactId>kotlin-test-junit5</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<build>
|
|
<finalName>kotlin-demo</finalName>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.jetbrains.kotlin</groupId>
|
|
<artifactId>kotlin-maven-plugin</artifactId>
|
|
<version>${kotlin.version}</version>
|
|
<configuration>
|
|
<args>
|
|
<arg>-Xjsr305=strict</arg>
|
|
</args>
|
|
<compilerPlugins>
|
|
<plugin>spring</plugin>
|
|
<plugin>jpa</plugin>
|
|
</compilerPlugins>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>compile</id>
|
|
<phase>compile</phase>
|
|
<goals><goal>compile</goal></goals>
|
|
<configuration>
|
|
<sourceDirs>
|
|
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
|
|
<sourceDir>${project.basedir}/src/main/java</sourceDir>
|
|
</sourceDirs>
|
|
</configuration>
|
|
</execution>
|
|
<execution>
|
|
<id>test-compile</id>
|
|
<phase>test-compile</phase>
|
|
<goals><goal>test-compile</goal></goals>
|
|
<configuration>
|
|
<sourceDirs>
|
|
<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
|
|
</sourceDirs>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.jetbrains.kotlin</groupId>
|
|
<artifactId>kotlin-maven-allopen</artifactId>
|
|
<version>${kotlin.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.jetbrains.kotlin</groupId>
|
|
<artifactId>kotlin-maven-noarg</artifactId>
|
|
<version>${kotlin.version}</version>
|
|
</dependency>
|
|
</dependencies>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<executions>
|
|
<execution>
|
|
<id>default-compile</id>
|
|
<phase>none</phase>
|
|
</execution>
|
|
<execution>
|
|
<id>default-testCompile</id>
|
|
<phase>none</phase>
|
|
</execution>
|
|
<execution>
|
|
<id>java-compile</id>
|
|
<phase>compile</phase>
|
|
<goals><goal>compile</goal></goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
|
|
</project>
|