Skip to content

Issue #464: Move building of the distribution archives into its own module - #465

Merged
reckart merged 4 commits into
mainfrom
refactoring/464-Move-building-of-the-distribution-archives-into-its-own-module
Oct 5, 2026
Merged

reckart merged 4 commits into
mainfrom
refactoring/464-Move-building-of-the-distribution-archives-into-its-own-module

Conversation

@reckart

@reckart reckart commented Sep 21, 2026

Copy link
Copy Markdown
Member

What's in the PR

  • Move the binary distribution build out of the root aggregator into a new uimaj-dist module, relocating the assembly descriptor, launch scripts, logger properties, readme helper scripts and binary-distribution LICENSE/NOTICE files along with the bundled-artifact dependency list that defines the archive contents
  • Restore the maven-deploy-plugin skip explicitly on the root, which was previously inherited from the parent-pom build distribution profile that activates on the presence of src/main/assembly/bin.xml
  • Declare jVinci, jackson-core and commons-lang3 as direct dependencies of the distribution instead of relying on them arriving transitively, so the shipped lib/ no longer depends on another module's dependency graph
  • Drop the log4j bindings from the distribution and document that it ships exactly one slf4j binding, since a second binding on the launcher classpath would silently disable the bundled logger configuration
  • Force the root aggregator to build before uimaj-dist via an explicit dependency, as the aggregated Javadoc and generated release notes can only be produced on the root but are consumed by the binary assembly
  • Add a check-distribution-inputs guard that fails release builds fast when the aggregated Javadoc or release notes are missing, rather than silently producing an archive with empty sections
  • Move all RC auto-staging into uimaj-dist by relocating the marker-file-enabling-auto-staging marker, so the staging timestamp and candidate id are generated and consumed in one module and the binary distribution, source release and Eclipse update site all land in a single correctly named staging folder
  • Stage the source-release archive alongside the binary distribution, which was no longer being picked up after the move because the two archives now live in separate target directories
  • Assert that both archives are present in the staging folder, as Ant treats a fileset matching nothing as success and would otherwise publish an incomplete release candidate
  • Override the staging folder name and SCM commit message so the release candidate is named after the product rather than the new module's artifact id
  • Fix an unless:set="iisApacheRelease" typo that prevented the non-release-build staging message from ever being emitted
  • Add .mvn/maven.config forcing the depth-first dependency collector, working around a thread-safety bug in the p2 layout resolver extension under Maven 4
  • Exclude a gitignored scratch/ directory from RAT checks and from the source-release assembly, as that assembly packages the working directory rather than the git index
  • Update the release and Eclipse setup documentation for the relocated paths, and correct the stale project name in the Eclipse launch configuration for the source-packaging script

How to test manually

  • No specific test procedure

Automatic testing

  • PR adds/updates unit tests

Documentation

  • PR adds/updates documentation

Organizational

  • PR adds/updates dependencies.
    Only dependencies under approved licenses are allowed. LICENSE and NOTICE files in the respective modules where dependencies have been added as well as in the project root have been updated.

…odule

- Move the binary distribution build out of the root aggregator into a new `uimaj-dist` module, relocating the assembly descriptor, launch scripts, logger properties, readme helper scripts and binary-distribution LICENSE/NOTICE files along with the bundled-artifact dependency list that defines the archive contents
- Restore the `maven-deploy-plugin` skip explicitly on the root, which was previously inherited from the parent-pom `build distribution` profile that activates on the presence of `src/main/assembly/bin.xml`
- Declare `jVinci`, `jackson-core` and `commons-lang3` as direct dependencies of the distribution instead of relying on them arriving transitively, so the shipped `lib/` no longer depends on another module's dependency graph
- Drop the log4j bindings from the distribution and document that it ships exactly one slf4j binding, since a second binding on the launcher classpath would silently disable the bundled logger configuration
- Force the root aggregator to build before `uimaj-dist` via an explicit dependency, as the aggregated Javadoc and generated release notes can only be produced on the root but are consumed by the binary assembly
- Add a `check-distribution-inputs` guard that fails release builds fast when the aggregated Javadoc or release notes are missing, rather than silently producing an archive with empty sections
- Move all RC auto-staging into `uimaj-dist` by relocating the `marker-file-enabling-auto-staging` marker, so the staging timestamp and candidate id are generated and consumed in one module and the binary distribution, source release and Eclipse update site all land in a single correctly named staging folder
- Stage the source-release archive alongside the binary distribution, which was no longer being picked up after the move because the two archives now live in separate target directories
- Assert that both archives are present in the staging folder, as Ant treats a fileset matching nothing as success and would otherwise publish an incomplete release candidate
- Override the staging folder name and SCM commit message so the release candidate is named after the product rather than the new module's artifact id
- Fix an `unless:set="iisApacheRelease"` typo that prevented the non-release-build staging message from ever being emitted
- Add `.mvn/maven.config` forcing the depth-first dependency collector, working around a thread-safety bug in the p2 layout resolver extension under Maven 4
- Exclude a gitignored `scratch/` directory from RAT checks and from the source-release assembly, as that assembly packages the working directory rather than the git index
- Update the release and Eclipse setup documentation for the relocated paths, and correct the stale project name in the Eclipse launch configuration for the source-packaging script
@reckart reckart self-assigned this Sep 21, 2026
@reckart reckart added this to the 3.7.0 milestone Sep 21, 2026
@reckart reckart added the ⚙️ Refactoring Improvement for development or maintainability label Sep 21, 2026
…odule

- Add explicit reactor-ordering dependencies so the distribution archives are built after everything they package. The root POM now depends on all modules with Java sources (provided scope, for the aggregated Javadoc), and uimaj-dist depends on uimaj-documentation and, in the apache-release profile, on uimaj-eclipse-update-site
- Use pom-type dependencies with wildcard exclusions so the ordering edges don't leak into the lib/ contents of the binary distribution
- Add a pre-flight check in uimaj-dist that fails fast if the generated documentation is missing, and another in the release staging step that fails if the Eclipse update site is missing, before anything is copied
- Remove the `docs` profile (skipDocs switch) from uimaj-documentation so the asciidoctor executions are part of the regular build, and re-indent the POM accordingly
- Remove the obsolete marker-file-rc-auto-staging-module rat exclusion from the root POM
- Raise the minimum Maven version to 3.9.3 and update the build requirements in the README and the maintainer documentation (Java 21, Maven 3.9.3); drop the outdated MAVEN_OPTS/MaxPermSize advice
…odule

- Exclude the generated DEPENDENCIES file from the source distribution assembly, since dependencies are declared by uimaj-dist and the file would only contain an empty header
@reckart
reckart merged commit b928223 into main Oct 5, 2026
5 checks passed
@reckart
reckart deleted the refactoring/464-Move-building-of-the-distribution-archives-into-its-own-module branch October 5, 2026 13:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⚙️ Refactoring Improvement for development or maintainability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant