Skip to content

feat!: de-mavenize the build#182

Closed
joewiz wants to merge 2 commits into
eXist-db:masterfrom
joewiz:feature/demavenize
Closed

feat!: de-mavenize the build#182
joewiz wants to merge 2 commits into
eXist-db:masterfrom
joewiz:feature/demavenize

Conversation

@joewiz
Copy link
Copy Markdown
Member

@joewiz joewiz commented May 18, 2026

[This response was co-authored with Claude Code. -Joe]

Summary

Closes #180 by simplifying the release path. Modeled directly on monex@aa11953.

  • Replace Maven with Node.js/Gulp; gulp now assembles the XAR end-to-end (.build/dist/exist-function-documentation-<version>.xar)
  • Move package metadata into expath-pkg.xml.tmpl / repo.xml.tmpl (restored from history) and package.json#app
  • Wire in semantic-release with conventional commits + commitlint
  • New CI: build → install via @existdb/xst → cypress → release on master
  • build.xml shim retained for downstream Ant callers

BREAKING CHANGE: builds now require Node.js (lts/*) instead of Maven.

Test plan

  • npm ci && npm run build produces a valid XAR locally
  • XAR contains expath-pkg.xml/repo.xml with interpolated version, compiled fundocs.min.css, vendor assets, all xqm modules
  • CI green on this PR (build + cypress)
  • Verify npx semantic-release --dry-run (manually, before merge) picks up commits since v2.1.1 and proposes v2.2.0
  • After merge, confirm a real release tag is cut and the .xar asset lands on the GitHub release

joewiz added 2 commits May 18, 2026 13:05
Replace Maven with a Node.js/Gulp build modeled on monex
(eXist-db/monex#aa11953), and wire in semantic-release for
automated releases.

- Remove pom.xml, xar-assembly.xml, xquery-license-style.xml
- Rewrite gulpfile.js to assemble the XAR end-to-end:
  stage src/main/xar-resources/ into .build/, compile sass,
  copy vendor assets, expand *.tmpl tokens via
  @existdb/gulp-replace-tmpl, and zip to
  dist/exist-function-documentation-<version>.xar
- Restore expath-pkg.xml.tmpl and repo.xml.tmpl as the
  single source of truth for package metadata; move app
  fields (target, namespace, title, etc.) into package.json
  under "app"
- Add .releaserc, commitlint.config.js, .husky/commit-msg,
  and scripts/update-repo-changelog.js for semantic-release
- Replace Maven CI workflow with a Node build, install via
  @existdb/xst, Cypress test, and semantic-release job on
  master; add commitlint workflow
- Add build.xml shim for downstream tooling that calls Ant
- Drop maven ecosystem from dependabot.yml
- Ignore .build/, dist/, .env, .claude/

BREAKING CHANGE: builds now require Node.js (lts/*) instead
of Maven. Use \`npm ci && npm run build\` to produce the XAR.
This dep was carried over from an untracked template file written
during an aborted prior attempt. Master's XQuery code doesn't use
jinks-templates yet — declaring it here causes installs to 500 on
page render. Restore parity with the Maven xar-assembly.xml deps
(exist + html-templating only).
@joewiz
Copy link
Copy Markdown
Member Author

joewiz commented May 18, 2026

Closing in favor of a clean redo from master — this branch inadvertently picked up untracked-on-disk files from a prior aborted demavenize attempt (jinks-templates dep, speculative changelog entry). Replacement PR incoming.

@joewiz joewiz closed this May 18, 2026
@joewiz joewiz deleted the feature/demavenize branch May 18, 2026 18:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cut v7 friendly release

1 participant