This file complements .github/copilot-instructions.md and defines practical workflows for AI agents working in this repository.
- Use this guide to orchestrate tasks across core libraries, CLI, Eclipse tooling, Gradle plugins, Maven plugins, and docs.
- Prefer small, verifiable changes with targeted module builds/tests before full-repo validation.
- OS: Windows, macOS, or Linux.
- Shell: Use a POSIX-like shell when possible (
bashon Windows via Git Bash/MSYS2). - Java: 17+ required for the
masterbranch. - For docs work, prefer Docker-based Jekyll workflows over local Ruby installation.
- Build tools:
- Gradle wrapper:
./gradleworgradlew.bat - Maven wrapper:
./mvnwormvnw.cmd
- Gradle wrapper:
- Check Docker availability before docs build/run commands:
docker --versiondocker compose version(if compose workflows are used)
- Use local Ruby/Bundler setup only as fallback when Docker is unavailable.
- Preferred local docs server (Docker):
docker run --rm -it -p 4000:4000 -v "$PWD":/srv/jekyll -w /srv/jekyll jekyll/jekyll:4 jekyll serve -w --incremental --host 0.0.0.0
- Preferred docs build (Docker):
docker run --rm -it -v "$PWD":/srv/jekyll -w /srv/jekyll jekyll/jekyll:4 jekyll build
- Fallback scripts:
cd docs && ./run.shcd docs && ./build.sh
- Verify nav, search, static links, and release pages in the generated site.
- Keep top-level docs policy aligned with
docs/Agents.md.
biz.aQute.bndliband relatedbiz.aQute.*modules:- Core OSGi analysis/building capabilities, resolver/repository support, testing/runtime utilities.
biz.aQute.bnd:- bnd CLI entrypoint and command set for building, inspecting, resolving, exporting, and generating docs.
bndtools.*andorg.bndtools.*:- Eclipse/Bndtools IDE integrations, launch/debug/build UX, APIs, and supporting bundles.
- Keep Java 17 active in shell before builds.
- Update dependency/version inputs in:
- root
gradle.properties - module
bnd.bnd - module
build.gradlewhen present
- root
- For release/version work, align with repository release scripts and docs.
- Fast local compile for changed module:
./gradlew :biz.aQute.bndlib:build -x test
- Recommended baseline for workspace projects:
./gradlew :build
- Targeted test class:
./gradlew :biz.aQute.bndall.tests:test --tests "fully.qualified.TestClass"
- Single test method:
./gradlew :biz.aQute.bndall.tests:test --tests "fully.qualified.TestClass.testMethod"
- Build CLI jar first via workspace build, then run commands from generated jar, for example:
java -jar biz.aQute.bnd/generated/biz.aQute.bnd.jar version
- Validate behavior with targeted tests first, then module-level
build, then:buildwhen scope is broad. - For API/package changes, ensure semantic versioning and baselining expectations are preserved.
- Treat these as Eclipse plugin bundles (manifest-first, OSGi aware).
- Keep plugin metadata aligned when adding extension points/services.
- Build a specific module quickly:
./gradlew :bndtools.core:build -x test
- Build all workspace projects (includes bndtools modules):
./gradlew :build
- Run module tests:
./gradlew :bndtools.core.test:test
- Prefer focused regression tests for marker handling, launchers, facade usage, and workspace model behavior.
- For IDE behavior validation, launch Bndtools through the platform-specific
.bndrunlaunchers underbndtools.core.
- Confirm expected markers, launch configs, and extension contributions in a running Eclipse instance.
- Verify no regressions in existing launch/build flows and existing test suites.
- Step 1: Build/test only changed modules.
- Step 2: Build corresponding plugin set (
:gradle-plugins:buildor./mvnw install) if impacted. - Step 3: Run
./gradlew :buildfor workspace-wide confidence. - Step 4: For publish path checks, run:
./gradlew :publish./gradlew :gradle-plugins:publish./mvnw -Pdist deploy
- Prefer wrappers (
./gradlew,./mvnw) over system-installed tools. - Prefer targeted tests first, then broaden scope.
- Avoid broad formatting-only changes.
- Keep changes backward compatible unless explicitly scoped for breaking change work.