Upgrade to Kotlin 2.3, Jackson 3, and Gradle 9#22
Conversation
Modernize build infrastructure to Gradle 9.x for improved performance and compatibility with modern JDKs. The native access warning is suppressed via gradle.properties for JDK 24+. - Upgrade Gradle wrapper from 8.5 to 9.2.1 - Add --enable-native-access=ALL-UNNAMED JVM arg for JDK 24+ - Update wrapper scripts to latest Gradle-generated versions
Modernize project dependencies to latest major versions. Jackson 3.x relocates core packages from com.fasterxml.jackson to tools.jackson while retaining 2.x annotations per JSTEP-1 decision. - Upgrade Kotlin plugin from 1.9.22 to 2.3.0 - Upgrade Dokka plugin from 1.9.10 to 2.1.0 - Migrate to Jackson 3.0.3 BOM (tools.jackson namespace) - Replace jacksonObjectMapper() with JsonMapper.builder() pattern - Use KotlinModule.Builder().build() for Kotlin serialization support - Update JsonNode API calls to Jackson 3 conventions Note: com.fasterxml.jackson.annotation imports are intentional as Jackson 3 officially reuses 2.x annotations module per JSTEP-1.
There was a problem hiding this comment.
Pull request overview
This pull request upgrades core build tooling and dependencies to their latest versions, including Gradle 8.5 → 9.2.1, Kotlin 1.9.22 → 2.3.0, Dokka 1.9.10 → 2.1.0, and Jackson 2.16 → 3.0.3. The migration includes updating Gradle wrapper scripts, adjusting Jackson package imports to reflect Jackson 3's new namespace (tools.jackson for core packages while keeping 2.x annotations), updating API methods (asText() → stringValue()), and refactoring ObjectMapper configuration to use the new builder pattern.
Changes:
- Updated Gradle wrapper to version 9.2.1 with improved POSIX compatibility and updated Windows batch script syntax
- Migrated Jackson dependencies from 2.16 to 3.0.3, updating package imports and API calls
- Upgraded Kotlin to 2.3.0 and Dokka to 2.1.0
Reviewed changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| gradlew | Updated Gradle wrapper script with enhanced POSIX shell compatibility and improved documentation |
| gradlew.bat | Updated Windows batch script with modernized syntax and improved error handling |
| gradle/wrapper/gradle-wrapper.properties | Updated Gradle distribution URL to 9.2.1 and added network timeout and validation settings |
| gradle/wrapper/gradle-wrapper.jar | Updated Gradle wrapper JAR binary to version 9.2.1 |
| gradle.properties | Added JDK 24+ native access warning suppression |
| apple-maps-server-kotlin/build.gradle.kts | Updated Kotlin to 2.3.0, Dokka to 2.1.0, and migrated Jackson dependencies to 3.0.3 using BOM |
| apple-maps-server-kotlin/src/main/kotlin/com/doorbit/applemaps/AppleMaps.kt | Updated Jackson imports to tools.jackson namespace and refactored ObjectMapper configuration |
| apple-maps-server-kotlin/src/main/kotlin/com/doorbit/applemaps/AppleMapsAuthorizationService.kt | Updated Jackson imports to tools.jackson namespace and replaced asText() with stringValue() |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| return JsonMapper.builder() | ||
| .addModule(KotlinModule.Builder().build()) | ||
| .changeDefaultPropertyInclusion { incl -> | ||
| incl.withValueInclusion(JsonInclude.Include.NON_NULL) | ||
| } | ||
| .build() |
There was a problem hiding this comment.
The removal of configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) may cause deserialization to fail when the Apple Maps API returns unexpected fields. In Jackson 3, the default behavior is to fail on unknown properties. Consider adding .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) to the builder chain to maintain backward compatibility and prevent potential runtime failures.
Updates build tooling and dependencies to current versions.
Jackson 3 moves core packages to
tools.jacksonbut keeps using 2.x annotations, so the mixed imports are intentional.