[ 
https://issues.apache.org/jira/browse/GEODE-10530?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jinwoo Hwang updated GEODE-10530:
---------------------------------
    Description: 
h2. Summary

The Apache Geode Examples project currently uses outdated build tools and 
dependencies:
 * Gradle 5.5
 * Java 8

This task is to migrate the project to modern versions to improve 
compatibility, security, and maintainability.
h2. Goals
 * Upgrade Gradle from 5.5 to 7.3.3
 * Upgrade Java compatibility from Java 8 to Java 17
 * Ensure all builds and tests pass successfully
 * Maintain backward compatibility where possible

h2. Current State
h3. Build Configuration
 * *Gradle Version:* 5.5
 * *Java Version:* 8
 * *Repository:* {{[https://maven.apachegeode-ci.info/snapshots]}}

h3. Key Dependencies
 * {{geode-all-bom}} - Platform BOM for dependency management
 * {{{}geode-core{}}}, {{{}geode-cq{}}}, {{geode-logging}} - Core Geode 
libraries
 * {{geode-lucene}} - Lucene integration (version 6.4.1)
 * Various Apache Commons and Guava dependencies

h3. Known Issues
 * CI snapshot repository may have availability issues
 * Some Gradle configurations use deprecated syntax (e.g., {{{}compile{}}}, 
{{{}baseName{}}})
 * Spotless plugin version incompatible with Gradle 7+
 * Legacy dependency declarations need modernization

h2. Migration Scope
h3. Files Requiring Updates
||File||Changes Required||
|{{gradle/wrapper/gradle-wrapper.properties}}|Update Gradle distribution URL to 
7.3.3|
|{{sessionState/webapp/gradle/wrapper/gradle-wrapper.properties}}|Update Gradle 
distribution URL to 7.3.3|
|{{build.gradle}}|Update plugin versions, fix deprecated syntax, add Java 17 
compatibility|
|{{gradle/spotless.gradle}}|Update plugin reference and API usage|
|{{gradle/release.gradle}}|Fix deprecated {{baseName}} property|
|{{lucene/build.gradle}}|Replace {{compile}} with {{implementation}}|
|{{luceneSpatial/build.gradle}}|Replace {{{}compile{}}}, update Lucene 
dependencies, fix {{configurations['runtime']}}|
|{{micrometerMetrics/build.gradle}}|Fix {{configurations.compile.extendsFrom}}|
|{{sessionState/webapp/build.gradle}}|Replace {{{}providedCompile{}}}, 
{{{}testCompile{}}}, update Java version|
|{{gradle.properties}}|Update Geode version and repository URL|
|{{.github/workflows/gradle.yml}}|Update Java version in CI workflow|
h3. Plugin Updates
 * {{{}org.nosphere.apache.rat{}}}: 0.6.0 → 0.8.0
 * {{{}com.diffplug.gradle.spotless{}}}: 3.0.0 → {{com.diffplug.spotless}} 
6.11.0
 * {{{}de.undercouch.download{}}}: 3.1.2 → 5.0.1

h3. API/Syntax Changes
h4. Gradle 7 Deprecations
 * {{compile}} → {{implementation}}
 * {{testCompile}} → {{testImplementation}}
 * {{providedCompile}} → {{compileOnly}}
 * {{configurations['runtime']}} → {{configurations.runtimeClasspath}}
 * {{configurations.compile.extendsFrom()}} → {{implementation 
configurations.xxx}}
 * {{baseName}} → {{archiveBaseName}}
 * {{extension}} → {{archiveExtension}}
 * {{archiveName}} → {{archiveFileName}}

h4. Spotless Plugin
 * Plugin ID: {{com.diffplug.gradle.spotless}} → {{com.diffplug.spotless}}
 * {{eclipseFormatFile()}} → {{eclipse().configFile()}}

h2. Migration Strategy
h3. Phase 1: Investigation & Planning (Day 1)
 * Research Gradle 7.3.3 migration requirements and breaking changes
 * Identify all deprecated API usages across the project
 * Review Lucene version compatibility matrix
 * Create detailed task breakdown and risk assessment

h3. Phase 2: Gradle Wrapper & Build Script Updates (Days 2-3)
 * Update {{gradle-wrapper.properties}} files to Gradle 7.3.3
 * Update plugin versions in root {{build.gradle}}
 * Fix deprecated Gradle API usage across all build scripts
 * Update dependency configurations (compile → implementation, etc.)
 * Add Java 17 sourceCompatibility and targetCompatibility
 * Test wrapper functionality and basic build execution

h3. Phase 3: Dependency Resolution & Repository Configuration (Days 4-5)
 * Implement flexible repository URL configuration via parameters
 * Resolve Lucene dependency conflicts
 * Add missing transitive dependencies (e.g., spatial4j)
 * Update dependency versions for Java 17 compatibility
 * Test dependency resolution with various repository configurations

h3. Phase 4: Code Compatibility & API Updates (Days 6-7)
 * Address Java 17 compilation issues
 * Update Lucene API usage for version 9+ compatibility
 ** Replace {{RAMDirectory}} with {{ByteBuffersDirectory}}
 ** Update {{totalHits}} to {{totalHits.value}}
 ** Fix other Lucene API changes
 * Resolve deprecated API warnings
 * Update test code for new library versions
 * Fix any code that relies on JDK internal APIs

h3. Phase 5: Testing & Issue Resolution (Days 8-9)
 * Run full build with {{./gradlew clean build}}
 * Execute all tests and identify failures
 * Debug and fix test failures
 * Run spotless formatting checks
 * Test with both hardcoded and parameterized repository URLs
 * Verify all subprojects compile and test successfully
 * Run integration tests if available

h3. Phase 6: CI/CD & Documentation (Day 10)
 * Update GitHub Actions workflow for Java 17
 * Update README with new build requirements
 * Document new command-line parameter usage
 * Create migration guide for developers
 * Update contribution guidelines if needed
 * Test CI pipeline end-to-end

h2. Risks & Mitigation
h3. Breaking API Changes

*Risk:* Lucene API changes between versions 6.4.1 and 9.12.3
*Mitigation:*
 * Research Lucene migration guide thoroughly
 * Update code to use new APIs (e.g., {{RAMDirectory}} → 
{{{}ByteBuffersDirectory{}}})
 * Fix {{totalHits}} → {{totalHits.value}} in test assertions
 * Allocate extra time for API compatibility testing
 * Consider maintaining compatibility layer if needed

h3. Gradle Plugin Compatibility

*Risk:* Older plugin versions incompatible with Gradle 7.3.3
*Mitigation:*
 * Update all plugins to versions compatible with Gradle 7.x
 * Test plugin functionality after upgrade
 * Review plugin documentation for breaking changes
 * Have rollback plan if plugins don't work

h3. Test Failures

*Risk:* Tests may fail due to dependency version changes or API 
incompatibilities
*Mitigation:*
 * Run tests frequently during migration
 * Fix issues incrementally
 * Add missing dependencies (e.g., {{{}spatial4j{}}})
 * Allocate dedicated time for debugging test failures
 * Document known issues and workarounds

h3. Java 17 Compatibility

*Risk:* Code may use deprecated or removed Java APIs
*Mitigation:*
 * Run with {{--illegal-access=warn}} to identify issues early
 * Update code to use supported APIs
 * Test thoroughly on Java 17 runtime
 * Review Java 17 migration guide

h2. Success Criteria
 # Gradle 7.3.3 wrapper successfully downloads and executes
 # Java 17 sourceCompatibility and targetCompatibility set
 # All deprecated Gradle configurations replaced
 # {{/gradlew build}} completes successfully
 # {{/gradlew test}} passes with zero failures
 # {{/gradlew spotlessApply}} executes without errors
 # Repository URL can be specified via {{-P}} parameter
 # CI workflow updated to use Java 17 and passes
 # No compilation warnings related to deprecated APIs (target)
 # Documentation updated with new build requirements
 # All subprojects build and test successfully
 # Code formatting standards maintained

h2. Dependencies
 * Gradle 7.3.3 compatible plugins
 * Java 17 JDK installed on development and CI environments
 * Updated Lucene spatial dependencies
 * Coordination with Geode release team for repository access
 * Testing environment with Java 17 runtime

h2. Timeline Estimate
||Phase||Estimated Effort||
|Phase 1: Investigation & Planning|1 day|
|Phase 2: Gradle & Build Scripts|2 days|
|Phase 3: Dependencies & Repositories|2 days|
|Phase 4: Code Compatibility|2 days|
|Phase 5: Testing & Issue Resolution|2 days|
|Phase 6: CI/CD & Documentation|1 day|
|*Buffer for unexpected issues*|*2 days*|
|*Total*|*12 days*|

_Note: Timeline assumes one developer working full-time. Actual duration may 
vary based on complexity of issues encountered and availability of external 
dependencies._
h2. References
 * [Gradle 7.3.3 Release Notes|https://docs.gradle.org/7.3.3/release-notes.html]
 * [Gradle 7.x Migration 
Guide|https://docs.gradle.org/current/userguide/upgrading_version_6.html]
 * [Java 17 Migration Guide|https://docs.oracle.com/en/java/javase/17/migrate/]
 * [Lucene 9.x Migration Guide|https://lucene.apache.org/core/9_0_0/]
 * [Gradle Java Plugin 
Documentation|https://docs.gradle.org/current/userguide/java_plugin.html]
 * [Spotless Plugin Documentation|https://github.com/diffplug/spotless]

  was:
h2. Summary

The Apache Geode Examples project currently uses outdated build tools and 
dependencies:
 * Gradle 5.5
 * Java 8

This task is to migrate the project to modern versions to improve 
compatibility, security, and maintainability.
h2. Goals
 * Upgrade Gradle from 5.5 to 7.3.3
 * Upgrade Java compatibility from Java 8 to Java 17
 * Ensure all builds and tests pass successfully
 * Maintain backward compatibility where possible

h2. Current State
h3. Build Configuration
 * *Gradle Version:* 5.5
 * *Java Version:* 8
 * *Repository:* {{[https://maven.apachegeode-ci.info/snapshots]}}

h3. Key Dependencies
 * {{geode-all-bom}} - Platform BOM for dependency management
 * {{{}geode-core{}}}, {{{}geode-cq{}}}, {{geode-logging}} - Core Geode 
libraries
 * {{geode-lucene}} - Lucene integration (version 6.4.1)
 * Various Apache Commons and Guava dependencies

h3. Known Issues
 * CI snapshot repository may have availability issues
 * Some Gradle configurations use deprecated syntax (e.g., {{{}compile{}}}, 
{{{}baseName{}}})
 * Spotless plugin version incompatible with Gradle 7+
 * Legacy dependency declarations need modernization

h2. Migration Scope
h3. Files Requiring Updates
||File||Changes Required||
|{{gradle/wrapper/gradle-wrapper.properties}}|Update Gradle distribution URL to 
7.3.3|
|{{sessionState/webapp/gradle/wrapper/gradle-wrapper.properties}}|Update Gradle 
distribution URL to 7.3.3|
|{{build.gradle}}|Update plugin versions, fix deprecated syntax, add Java 17 
compatibility|
|{{gradle/spotless.gradle}}|Update plugin reference and API usage|
|{{gradle/release.gradle}}|Fix deprecated {{baseName}} property|
|{{lucene/build.gradle}}|Replace {{compile}} with {{implementation}}|
|{{luceneSpatial/build.gradle}}|Replace {{{}compile{}}}, update Lucene 
dependencies, fix {{configurations['runtime']}}|
|{{micrometerMetrics/build.gradle}}|Fix {{configurations.compile.extendsFrom}}|
|{{sessionState/webapp/build.gradle}}|Replace {{{}providedCompile{}}}, 
{{{}testCompile{}}}, update Java version|
|{{gradle.properties}}|Update Geode version and repository URL|
|{{.github/workflows/gradle.yml}}|Update Java version in CI workflow|
h3. Plugin Updates
 * {{{}org.nosphere.apache.rat{}}}: 0.6.0 → 0.8.0
 * {{{}com.diffplug.gradle.spotless{}}}: 3.0.0 → {{com.diffplug.spotless}} 
6.11.0
 * {{{}de.undercouch.download{}}}: 3.1.2 → 5.0.1

h3. API/Syntax Changes
h4. Gradle 7 Deprecations
 * {{compile}} → {{implementation}}
 * {{testCompile}} → {{testImplementation}}
 * {{providedCompile}} → {{compileOnly}}
 * {{configurations['runtime']}} → {{configurations.runtimeClasspath}}
 * {{configurations.compile.extendsFrom()}} → {{implementation 
configurations.xxx}}
 * {{baseName}} → {{archiveBaseName}}
 * {{extension}} → {{archiveExtension}}
 * {{archiveName}} → {{archiveFileName}}

h4. Spotless Plugin
 * Plugin ID: {{com.diffplug.gradle.spotless}} → {{com.diffplug.spotless}}
 * {{eclipseFormatFile()}} → {{eclipse().configFile()}}

h2. Migration Strategy
h3. Phase 1: Investigation & Planning (Day 1)
 * Research Gradle 7.3.3 migration requirements and breaking changes
 * Identify all deprecated API usages across the project
 * Review Lucene version compatibility matrix
 * Create detailed task breakdown and risk assessment

h3. Phase 2: Gradle Wrapper & Build Script Updates (Days 2-3)
 * Update {{gradle-wrapper.properties}} files to Gradle 7.3.3
 * Update plugin versions in root {{build.gradle}}
 * Fix deprecated Gradle API usage across all build scripts
 * Update dependency configurations (compile → implementation, etc.)
 * Add Java 17 sourceCompatibility and targetCompatibility
 * Test wrapper functionality and basic build execution

h3. Phase 3: Dependency Resolution & Repository Configuration (Days 4-5)
 * Implement flexible repository URL configuration via parameters
 * Resolve Lucene dependency conflicts
 * Add missing transitive dependencies (e.g., spatial4j)
 * Update dependency versions for Java 17 compatibility
 * Test dependency resolution with various repository configurations

h3. Phase 4: Code Compatibility & API Updates (Days 6-7)
 * Address Java 17 compilation issues
 * Update Lucene API usage for version 9+ compatibility
 ** Replace {{RAMDirectory}} with {{ByteBuffersDirectory}}
 ** Update {{totalHits}} to {{totalHits.value}}
 ** Fix other Lucene API changes
 * Resolve deprecated API warnings
 * Update test code for new library versions
 * Fix any code that relies on JDK internal APIs

h3. Phase 5: Testing & Issue Resolution (Days 8-9)
 * Run full build with {{./gradlew clean build}}
 * Execute all tests and identify failures
 * Debug and fix test failures
 * Run spotless formatting checks
 * Test with both hardcoded and parameterized repository URLs
 * Verify all subprojects compile and test successfully
 * Run integration tests if available

h3. Phase 6: CI/CD & Documentation (Day 10)
 * Update GitHub Actions workflow for Java 17
 * Update README with new build requirements
 * Document new command-line parameter usage
 * Create migration guide for developers
 * Update contribution guidelines if needed
 * Test CI pipeline end-to-end

h2. Risks & Mitigation
h3. Breaking API Changes

*Risk:* Lucene API changes between versions 6.4.1 and 9.12.3
*Mitigation:*
 * Research Lucene migration guide thoroughly
 * Update code to use new APIs (e.g., {{RAMDirectory}} → 
{{{}ByteBuffersDirectory{}}})
 * Fix {{totalHits}} → {{totalHits.value}} in test assertions
 * Allocate extra time for API compatibility testing
 * Consider maintaining compatibility layer if needed

h3. Gradle Plugin Compatibility

*Risk:* Older plugin versions incompatible with Gradle 7.3.3
*Mitigation:*
 * Update all plugins to versions compatible with Gradle 7.x
 * Test plugin functionality after upgrade
 * Review plugin documentation for breaking changes
 * Have rollback plan if plugins don't work

h3. Test Failures

*Risk:* Tests may fail due to dependency version changes or API 
incompatibilities
*Mitigation:*
 * Run tests frequently during migration
 * Fix issues incrementally
 * Add missing dependencies (e.g., {{{}spatial4j{}}})
 * Allocate dedicated time for debugging test failures
 * Document known issues and workarounds

h3. Java 17 Compatibility

*Risk:* Code may use deprecated or removed Java APIs
*Mitigation:*
 * Run with {{--illegal-access=warn}} to identify issues early
 * Update code to use supported APIs
 * Test thoroughly on Java 17 runtime
 * Review Java 17 migration guide

h2. Success Criteria
 # ✓ Gradle 7.3.3 wrapper successfully downloads and executes
 # ✓ Java 17 sourceCompatibility and targetCompatibility set
 # ✓ All deprecated Gradle configurations replaced
 # ✓ {{./gradlew build}} completes successfully
 # ✓ {{./gradlew test}} passes with zero failures
 # ✓ {{./gradlew spotlessApply}} executes without errors
 # ✓ Repository URL can be specified via {{-P}} parameter
 # ✓ CI workflow updated to use Java 17 and passes
 # ✓ No compilation warnings related to deprecated APIs (target)
 # ✓ Documentation updated with new build requirements
 # ✓ All subprojects build and test successfully
 # ✓ Code formatting standards maintained

h2. Dependencies
 * Gradle 7.3.3 compatible plugins
 * Java 17 JDK installed on development and CI environments
 * Updated Lucene spatial dependencies
 * Coordination with Geode release team for repository access
 * Testing environment with Java 17 runtime

h2. Timeline Estimate
||Phase||Estimated Effort||
|Phase 1: Investigation & Planning|1 day|
|Phase 2: Gradle & Build Scripts|2 days|
|Phase 3: Dependencies & Repositories|2 days|
|Phase 4: Code Compatibility|2 days|
|Phase 5: Testing & Issue Resolution|2 days|
|Phase 6: CI/CD & Documentation|1 day|
|*Buffer for unexpected issues*|*2 days*|
|*Total*|*12 days*|

_Note: Timeline assumes one developer working full-time. Actual duration may 
vary based on complexity of issues encountered and availability of external 
dependencies._
h2. References
 * [Gradle 7.3.3 Release Notes|https://docs.gradle.org/7.3.3/release-notes.html]
 * [Gradle 7.x Migration 
Guide|https://docs.gradle.org/current/userguide/upgrading_version_6.html]
 * [Java 17 Migration Guide|https://docs.oracle.com/en/java/javase/17/migrate/]
 * [Lucene 9.x Migration Guide|https://lucene.apache.org/core/9_0_0/]
 * [Gradle Java Plugin 
Documentation|https://docs.gradle.org/current/userguide/java_plugin.html]
 * [Spotless Plugin Documentation|https://github.com/diffplug/spotless]


> Migrate Apache Geode Examples to Gradle 7.3.3 and Java 17
> ---------------------------------------------------------
>
>                 Key: GEODE-10530
>                 URL: https://issues.apache.org/jira/browse/GEODE-10530
>             Project: Geode
>          Issue Type: Improvement
>            Reporter: Jinwoo Hwang
>            Assignee: Jinwoo Hwang
>            Priority: Major
>
> h2. Summary
> The Apache Geode Examples project currently uses outdated build tools and 
> dependencies:
>  * Gradle 5.5
>  * Java 8
> This task is to migrate the project to modern versions to improve 
> compatibility, security, and maintainability.
> h2. Goals
>  * Upgrade Gradle from 5.5 to 7.3.3
>  * Upgrade Java compatibility from Java 8 to Java 17
>  * Ensure all builds and tests pass successfully
>  * Maintain backward compatibility where possible
> h2. Current State
> h3. Build Configuration
>  * *Gradle Version:* 5.5
>  * *Java Version:* 8
>  * *Repository:* {{[https://maven.apachegeode-ci.info/snapshots]}}
> h3. Key Dependencies
>  * {{geode-all-bom}} - Platform BOM for dependency management
>  * {{{}geode-core{}}}, {{{}geode-cq{}}}, {{geode-logging}} - Core Geode 
> libraries
>  * {{geode-lucene}} - Lucene integration (version 6.4.1)
>  * Various Apache Commons and Guava dependencies
> h3. Known Issues
>  * CI snapshot repository may have availability issues
>  * Some Gradle configurations use deprecated syntax (e.g., {{{}compile{}}}, 
> {{{}baseName{}}})
>  * Spotless plugin version incompatible with Gradle 7+
>  * Legacy dependency declarations need modernization
> h2. Migration Scope
> h3. Files Requiring Updates
> ||File||Changes Required||
> |{{gradle/wrapper/gradle-wrapper.properties}}|Update Gradle distribution URL 
> to 7.3.3|
> |{{sessionState/webapp/gradle/wrapper/gradle-wrapper.properties}}|Update 
> Gradle distribution URL to 7.3.3|
> |{{build.gradle}}|Update plugin versions, fix deprecated syntax, add Java 17 
> compatibility|
> |{{gradle/spotless.gradle}}|Update plugin reference and API usage|
> |{{gradle/release.gradle}}|Fix deprecated {{baseName}} property|
> |{{lucene/build.gradle}}|Replace {{compile}} with {{implementation}}|
> |{{luceneSpatial/build.gradle}}|Replace {{{}compile{}}}, update Lucene 
> dependencies, fix {{configurations['runtime']}}|
> |{{micrometerMetrics/build.gradle}}|Fix 
> {{configurations.compile.extendsFrom}}|
> |{{sessionState/webapp/build.gradle}}|Replace {{{}providedCompile{}}}, 
> {{{}testCompile{}}}, update Java version|
> |{{gradle.properties}}|Update Geode version and repository URL|
> |{{.github/workflows/gradle.yml}}|Update Java version in CI workflow|
> h3. Plugin Updates
>  * {{{}org.nosphere.apache.rat{}}}: 0.6.0 → 0.8.0
>  * {{{}com.diffplug.gradle.spotless{}}}: 3.0.0 → {{com.diffplug.spotless}} 
> 6.11.0
>  * {{{}de.undercouch.download{}}}: 3.1.2 → 5.0.1
> h3. API/Syntax Changes
> h4. Gradle 7 Deprecations
>  * {{compile}} → {{implementation}}
>  * {{testCompile}} → {{testImplementation}}
>  * {{providedCompile}} → {{compileOnly}}
>  * {{configurations['runtime']}} → {{configurations.runtimeClasspath}}
>  * {{configurations.compile.extendsFrom()}} → {{implementation 
> configurations.xxx}}
>  * {{baseName}} → {{archiveBaseName}}
>  * {{extension}} → {{archiveExtension}}
>  * {{archiveName}} → {{archiveFileName}}
> h4. Spotless Plugin
>  * Plugin ID: {{com.diffplug.gradle.spotless}} → {{com.diffplug.spotless}}
>  * {{eclipseFormatFile()}} → {{eclipse().configFile()}}
> h2. Migration Strategy
> h3. Phase 1: Investigation & Planning (Day 1)
>  * Research Gradle 7.3.3 migration requirements and breaking changes
>  * Identify all deprecated API usages across the project
>  * Review Lucene version compatibility matrix
>  * Create detailed task breakdown and risk assessment
> h3. Phase 2: Gradle Wrapper & Build Script Updates (Days 2-3)
>  * Update {{gradle-wrapper.properties}} files to Gradle 7.3.3
>  * Update plugin versions in root {{build.gradle}}
>  * Fix deprecated Gradle API usage across all build scripts
>  * Update dependency configurations (compile → implementation, etc.)
>  * Add Java 17 sourceCompatibility and targetCompatibility
>  * Test wrapper functionality and basic build execution
> h3. Phase 3: Dependency Resolution & Repository Configuration (Days 4-5)
>  * Implement flexible repository URL configuration via parameters
>  * Resolve Lucene dependency conflicts
>  * Add missing transitive dependencies (e.g., spatial4j)
>  * Update dependency versions for Java 17 compatibility
>  * Test dependency resolution with various repository configurations
> h3. Phase 4: Code Compatibility & API Updates (Days 6-7)
>  * Address Java 17 compilation issues
>  * Update Lucene API usage for version 9+ compatibility
>  ** Replace {{RAMDirectory}} with {{ByteBuffersDirectory}}
>  ** Update {{totalHits}} to {{totalHits.value}}
>  ** Fix other Lucene API changes
>  * Resolve deprecated API warnings
>  * Update test code for new library versions
>  * Fix any code that relies on JDK internal APIs
> h3. Phase 5: Testing & Issue Resolution (Days 8-9)
>  * Run full build with {{./gradlew clean build}}
>  * Execute all tests and identify failures
>  * Debug and fix test failures
>  * Run spotless formatting checks
>  * Test with both hardcoded and parameterized repository URLs
>  * Verify all subprojects compile and test successfully
>  * Run integration tests if available
> h3. Phase 6: CI/CD & Documentation (Day 10)
>  * Update GitHub Actions workflow for Java 17
>  * Update README with new build requirements
>  * Document new command-line parameter usage
>  * Create migration guide for developers
>  * Update contribution guidelines if needed
>  * Test CI pipeline end-to-end
> h2. Risks & Mitigation
> h3. Breaking API Changes
> *Risk:* Lucene API changes between versions 6.4.1 and 9.12.3
> *Mitigation:*
>  * Research Lucene migration guide thoroughly
>  * Update code to use new APIs (e.g., {{RAMDirectory}} → 
> {{{}ByteBuffersDirectory{}}})
>  * Fix {{totalHits}} → {{totalHits.value}} in test assertions
>  * Allocate extra time for API compatibility testing
>  * Consider maintaining compatibility layer if needed
> h3. Gradle Plugin Compatibility
> *Risk:* Older plugin versions incompatible with Gradle 7.3.3
> *Mitigation:*
>  * Update all plugins to versions compatible with Gradle 7.x
>  * Test plugin functionality after upgrade
>  * Review plugin documentation for breaking changes
>  * Have rollback plan if plugins don't work
> h3. Test Failures
> *Risk:* Tests may fail due to dependency version changes or API 
> incompatibilities
> *Mitigation:*
>  * Run tests frequently during migration
>  * Fix issues incrementally
>  * Add missing dependencies (e.g., {{{}spatial4j{}}})
>  * Allocate dedicated time for debugging test failures
>  * Document known issues and workarounds
> h3. Java 17 Compatibility
> *Risk:* Code may use deprecated or removed Java APIs
> *Mitigation:*
>  * Run with {{--illegal-access=warn}} to identify issues early
>  * Update code to use supported APIs
>  * Test thoroughly on Java 17 runtime
>  * Review Java 17 migration guide
> h2. Success Criteria
>  # Gradle 7.3.3 wrapper successfully downloads and executes
>  # Java 17 sourceCompatibility and targetCompatibility set
>  # All deprecated Gradle configurations replaced
>  # {{/gradlew build}} completes successfully
>  # {{/gradlew test}} passes with zero failures
>  # {{/gradlew spotlessApply}} executes without errors
>  # Repository URL can be specified via {{-P}} parameter
>  # CI workflow updated to use Java 17 and passes
>  # No compilation warnings related to deprecated APIs (target)
>  # Documentation updated with new build requirements
>  # All subprojects build and test successfully
>  # Code formatting standards maintained
> h2. Dependencies
>  * Gradle 7.3.3 compatible plugins
>  * Java 17 JDK installed on development and CI environments
>  * Updated Lucene spatial dependencies
>  * Coordination with Geode release team for repository access
>  * Testing environment with Java 17 runtime
> h2. Timeline Estimate
> ||Phase||Estimated Effort||
> |Phase 1: Investigation & Planning|1 day|
> |Phase 2: Gradle & Build Scripts|2 days|
> |Phase 3: Dependencies & Repositories|2 days|
> |Phase 4: Code Compatibility|2 days|
> |Phase 5: Testing & Issue Resolution|2 days|
> |Phase 6: CI/CD & Documentation|1 day|
> |*Buffer for unexpected issues*|*2 days*|
> |*Total*|*12 days*|
> _Note: Timeline assumes one developer working full-time. Actual duration may 
> vary based on complexity of issues encountered and availability of external 
> dependencies._
> h2. References
>  * [Gradle 7.3.3 Release 
> Notes|https://docs.gradle.org/7.3.3/release-notes.html]
>  * [Gradle 7.x Migration 
> Guide|https://docs.gradle.org/current/userguide/upgrading_version_6.html]
>  * [Java 17 Migration 
> Guide|https://docs.oracle.com/en/java/javase/17/migrate/]
>  * [Lucene 9.x Migration Guide|https://lucene.apache.org/core/9_0_0/]
>  * [Gradle Java Plugin 
> Documentation|https://docs.gradle.org/current/userguide/java_plugin.html]
>  * [Spotless Plugin Documentation|https://github.com/diffplug/spotless]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to