Upstream repository: https://github.com/rmraya/XMLJava
This patched fork exists for three main reasons:
- Java version compatibility — The upstream project targets Java 21; we must keep our repositories on Java 17.
- Build and compliance — Upstream uses Gradle (having migrated from Ant); it does not use Maven. This patch adds the required Maven configuration for our security and compliance pipeline, with the add-on superpom as parent and our versioning scheme.
- Stability and improvements — We apply fixes and improvements to the codebase where needed.
Pull the latest changes from the upstream fork:
- Use a merge-based pull, not rebase. Rebase tends to complicate the history and conflict resolution; merge is simpler for this workflow.
After pulling, resolve any merge conflicts as follows:
| Conflict location | Action |
|---|---|
module-info.java |
Remove this file. We do not use it in our build. |
| Other Java files | Resolve manually; keep or adapt code as appropriate for our patch. |
| All other files | Prefer the upstream version (theirs). Review briefly to ensure nothing critical for our setup is broken. |
Constants.java |
Always keep the upstream version of this file. |
Set the following in <properties> (get version and build ID from Constants.java):
<properties>
<!-- other properties -->
<patched.groupId>com.maxprograms</patched.groupId>
<patched.artifactId>xmljava</patched.artifactId>
<patched.version>{version}</patched.version>
<patched.buildId>{buildId}</patched.buildId>
</properties>
patched.version— Use the version fromConstants.java(or bump the minor version if this is an intermediate release).patched.buildId— Use the build ID fromConstants.java.
Update the parent and project version to match the current Oxygen and patch lifecycle:
<parent>
<groupId>com.oxygenxml</groupId>
<artifactId>oxygen-patched-superpom</artifactId>
<version>{superpom-version}</version>
</parent>
<artifactId>oxygen-patched-xmljava</artifactId>
<version>{patch-version}</version>
- Parent
version— Use the current Oxygen superpom version (e.g. if Oxygen 28.0 is released, use that superpom version). - Project
version— Use the upstream version or an incremented minor version for an intermediate release.
The following projects in our workspace also maintain patches from upstream and may need similar update procedures:
- BCP47J
- OpenXLIFF
- Swordfish
- Fluenta
Apply the same merge and conflict-resolution approach when updating those repositories.