Skip to content

[WIP] maven 4 migration#6276

Draft
duncdrum wants to merge 15 commits into
eXist-db:developfrom
duncdrum:mvn4-1
Draft

[WIP] maven 4 migration#6276
duncdrum wants to merge 15 commits into
eXist-db:developfrom
duncdrum:mvn4-1

Conversation

@duncdrum
Copy link
Copy Markdown
Contributor

update build tooling for maven 4. For now use mvnw for clean separation of v3 and v4. Once v4 is no longer RC we can consider its removal.

simplify releasish profiles, make installer generation off by default, and avoid long chains of disabled profiles for day to day operations.

start with releases config for CI.

needs #6246

@duncdrum duncdrum added enhancement new features, suggestions, etc. ci issues related to continuous integration labels Apr 29, 2026
@duncdrum duncdrum added this to v7.0.0 Apr 29, 2026
@duncdrum duncdrum moved this to In progress in v7.0.0 Apr 29, 2026
@duncdrum duncdrum added this to the eXist-7.0.0 milestone Apr 29, 2026
@duncdrum duncdrum force-pushed the mvn4-1 branch 2 times, most recently from 23ba8a3 to 862777d Compare May 2, 2026 11:07
duncdrum added 14 commits May 4, 2026 11:04
…aseInsertResourcesWithValidationTest

- Updated Javadoc comments in SwapVals to enhance clarity and formatting.
- Modified comments in DatabaseInsertResourcesWithValidationTest to use {@code} for HTML-like strings.
- Replaced direct Maven commands with the Maven Wrapper (`./mvnw`) in documentation and CI workflows for improved consistency and ease of use.
- Added Maven Wrapper scripts (`mvnw` and `mvnw.cmd`) and properties to facilitate building with a specific Maven version without requiring a system installation.
- Updated build instructions in `AGENTS.md` and `BUILD.md` to reflect the new usage of the Maven Wrapper.
- Renamed the 'installer' profile to 'local-build' and adjusted its activation to be the default.
- Introduced a new 'release-build' profile for packaging the installer.
- Changed the activation of 'concurrency-stress-tests' and 'micro-benchmarks' profiles to be inactive by default.
- Added a 'build-dist-archives' profile to control assembly behavior, defaulting to skipping assembly for local/CI builds.

close eXist-db#3394
- Replaced complex profile configurations with a simplified 'local-build' profile for local development.
- Introduced a 'release-build' profile to streamline the release process and activate release-specific properties.
- Updated CI workflows to remove unnecessary profile exclusions, enhancing build clarity and efficiency.
- Revised documentation in AGENTS.md to reflect the new build commands and profiles.

This change aims to improve the build process and facilitate easier releases.
- Updated the Maven GitHub Packages action to support optional Sonatype Central credentials for improved flexibility in publishing.
- Modified CI workflow conditions to allow publishing on tagged releases, enhancing deployment capabilities.
- Increased the minimum Maven version requirement to 4.0.0-rc-5 and added new build profiles for preflight checks, ensuring necessary environment variables are set before releases.

see eXist-db#6176
- Replaced hardcoded version numbers in POM files with a CI-friendly property `${revision}` for better flexibility in version management.
- Enhanced CI workflows to dynamically set the revision based on GitHub tags, ensuring accurate versioning during Docker builds and releases.
- Added `.flattened-pom.xml` to `.gitignore` to prevent unnecessary file tracking.

close eXist-db#4519
- Upgraded all POM files to use Maven version 4.1.0, ensuring compatibility with the latest features and improvements.
- Replaced `<modules>` tags with `<subprojects>` for better clarity and alignment with updated Maven practices.

Breaking Change: No more mvn 3.x support
- Updated all POM files to ensure consistent formatting by aligning the `<artifactId>` and `<relativePath>` elements.
- mvnup changes, inferred groupId, and implicit modelVersion result in StackOverflows keeping them explicit for now.
- Removed unnecessary `<relativePath>` elements from all POM files to streamline the structure and improve clarity.
- Ensured consistent formatting across modules by aligning the parent tags.
- Added guidance for using Maven 4's reactor resume mode to improve rerun efficiency after module failures.
- Updated release process documentation to include consumer POM flattening for published artifacts.
- Enhanced CI workflows to reflect new rerun strategies and ensure clarity on deploy behavior.
- Modified POM file to indicate it is a root project, aligning with Maven 4 standards.
- Introduced a new system property for product version retrieval in SystemProperties.java, allowing for dynamic resolution of version placeholders.
- Updated pom.xml files to include a Maven dependency plugin for analyzing unused declared dependencies, enhancing build clarity and maintenance.
- Ensured consistent handling of versioning across modules to improve overall project integrity.
…4.1 modules

- removing explicit ${project.version} for org.exist-db:exist-core across active reactor modules
- exclusions (exist-distribution, exist-xqts, exist-core-jcstress, exist-core-jmh, extensions/images, extensions/debuggee) due to current topology/profile constraints.
- removing redundant modelVersion declarations and selected intra-reactor org.exist-db dependency groupIds,
- preserve required explicit coordinates (e.g., exist-saxon-regex).
@dizzzz
Copy link
Copy Markdown
Member

dizzzz commented May 4, 2026

I think it is just a bit too early for v7

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci issues related to continuous integration enhancement new features, suggestions, etc.

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants