This repository contains the public Kotlin SDK package for the IPGeolocation.io IP Location API.
- Java 8+
- Maven 3.8+
For local development and release verification, use JDK 21 LTS if it is available.
If Maven runs on JDK 25 with Kotlin 2.1.21, you may see sun.misc.Unsafe warnings from the Kotlin compiler jars.
That warning is coming from the current Kotlin toolchain, not from this SDK code.
mvn clean compileIf Maven is picking a newer JDK and printing Kotlin compiler Unsafe warnings, point Maven at JDK 21 before running the build:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
export PATH="$JAVA_HOME/bin:$PATH"
mvn clean compileRun full public test suite:
mvn clean verifyRun all tests without cleaning:
mvn testRun one test class:
mvn -Dtest=IpGeolocationClientParsingTest testRun one test method:
mvn -Dtest=IpGeolocationClientParsingTest#parsesSingleLookupResponseAndMetadata testLive tests consume API credits and are disabled by default.
IPGEO_RUN_LIVE_TESTS=true \
IPGEO_FREE_KEY=... \
IPGEO_PAID_KEY=... \
mvn -Dtest=IpGeolocationLiveIntegrationTest testOptional live hardening tests compare raw API JSON to the typed SDK model and consume additional credits.
IPGEO_RUN_LIVE_HARDENING=true \
IPGEO_PAID_KEY=... \
mvn -Dtest=IpGeolocationLiveFieldParityTest testBuild the release artifacts without signing:
mvn -Prelease -Dgpg.skip=true clean verify- Keep changes focused and include tests for behavior changes.
- Do not commit real API keys, tokens, or secrets.
- Use clear commit messages, for example:
feat: add raw bulk xml supportfix: preserve nested error.message in bulk resultstest: add live parity coverage for user_agent fields