Comprehensive Java 25 migration and tech-debt reduction across the full
project. All changes verified via `mvn compile` and `mvn test-compile`
with zero errors.
- Add pom.xml: Maven 3 build replacing Ant; Java 25 compiler release;
maven-surefire-plugin 3.5.2, exec-maven-plugin 3.4.1,
build-helper-maven-plugin 3.6.0, maven-jar-plugin 3.4.2
- Add rasterize-milstd2525 Maven profile (antrun + batik-all:1.17)
replacing the bundled Batik 1.7 JARs
- Update run-demo.bash / run-demo.bat to launch via `mvn exec:exec`
- Add .github/workflows/ci.yml: Temurin 25, `mvn compile` + `xvfb-run
mvn test`, Surefire report upload on failure
- Add .github/workflows/release.yml: tag-triggered; builds JAR +
Javadoc zip; publishes via softprops/action-gh-release@v2
- Archive .travis.yml → .travis.yml.archived
- Remove 8 bundled JOGL 2.4-rc / GlueGen JARs (total ~4.4 MB)
- JOGL 2.6.0 and GlueGen 2.6.0 now resolved via Maven Central;
required --add-opens flags declared in pom.xml surefire/exec config
- Replace OS-specific reflection branches (com.apple.eio.FileManager,
Runtime.exec) with java.awt.Desktop.browse()
- Replace removed sun.arch.data.model property with os.arch checks
(x86, i386, i686) for 32-bit architecture detection
- Remove 75 vendored Jackson 1.x source files under src/org/codehaus/
- Add com.fasterxml.jackson.core:jackson-core:2.18.2 Maven dependency
- Migrate 5 WWJ source files: org.codehaus.jackson.* →
com.fasterxml.jackson.core.*; factory.createJsonParser() →
factory.createParser(); parser.getCurrentName() → parser.currentName()
- Update LICENSE.jackson.txt to reference FasterXML 2.18.2
- Remove lib-external/batik/ (Batik 1.7+r608262 + Ant 1.6.5, ~7.7 MB)
- SVG→PNG rasterisation now runs via the new rasterize-milstd2525 Maven
profile at release time (no compile-time dependency)
- Replace junit:junit:4.13.2 with org.junit.jupiter:junit-jupiter:5.11.4
(aggregator: API + engine + params; Surefire 3.5.2 auto-discovers)
- Migrate all 49 test files:
· @RunWith(JUnit4.class) removed (47 files)
· @RunWith(Parameterized.class) → @ParameterizedTest @MethodSource
(KMLExportTest, ShapeAttributesTest — constructors removed, data()
returns Stream<List<Exportable>> / Stream<Arguments>)
· @Before/@after → @BeforeEach/@AfterEach (8 files)
· @ignore → @disabled (4 files)
· @test(expected=…) → assertThrows() (KMLExportTest)
· All org.junit.Assert/org.junit.* imports → org.junit.jupiter.api.*
· 1,688 assert argument-order fixes (JUnit 4 message-first →
JUnit 5 message-last) across 35 files
· Private assertEquals(Iterable<T>…) helpers renamed
assertIterablesEqual in 3 layer test files to prevent name-shadowing
- Add MIGRATION_JAVA25.md: complete migration guide + tech-debt register
(TD-01 through TD-11) with priority scores and completion status
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Summary
This PR modernises the WorldWind Java build infrastructure and runtime dependencies to support Java 25, replacing the legacy Ant build and vendored libraries with a clean Maven build.
What changed
Build system
JOGL / GlueGen — 2.4.0-rc → 2.6.0
Jackson — vendored 1.x source → 2.18.2
JUnit 4 → JUnit 5 (Jupiter 5.11.4)
CI/CD
Test quality (simplify pass)
Test plan
Notes
🤖 Generated with Claude Code