This file provides guidance for automated contributors/agents working in the quickfix-j/quickfixj repository.
- Keep changes minimal and surgical.
- Avoid unrelated refactors or broad formatting-only edits.
- Prefer module-focused changes and include only files needed for the task.
- Use the repository Maven wrapper:
./mvnw(or./mvnw.cmdon Windows), not system Maven. - Java compatibility target is Java 8 (
maven.compiler.source=8,maven.compiler.target=8). - CI validates multiple Java versions and OSes (JDK 8/11/21 on Linux, macOS, and Windows).
- Fast local package (no tests):
./mvnw clean package -Dmaven.javadoc.skip=true -DskipTests -PskipBundlePlugin,minimal-fix-latest
- CI-equivalent validation baseline:
./mvnw install -Dmaven.javadoc.skip=true -PskipBundlePlugin,minimal-fix-latest
- If OSGi bundle artifacts are required, omit
-PskipBundlePlugin.
From a clean checkout, for targeted quickfixj-core tests/builds:
- Build orchestration/resources first (
quickfixj-orchestration). - Build required message artifacts, at least:
quickfixj-messages-fixt11quickfixj-messages-allquickfixj-messages-fixlatest
- Build/test
quickfixj-core(typically with-amwhen selecting modules).
This avoids missing generated resources/classes during targeted core runs.
- Run module-local tests first for the area you changed.
- Run broader reactor checks when changes cross module boundaries or affect shared build/generation logic.
- For bug fixes/features, add or adjust tests where applicable.
- Follow surrounding code style and import ordering in edited files.
- Java formatting reference profile:
quickfixj-core/src/main/eclipse/formatter.xml
- The formatter profile uses 4-space indentation, K&R-style braces, and does not auto-reformat comments.
- Never commit secrets, credentials, or private keys.
- Avoid changing generated/build-heavy modules unless required by the task.
- Keep PRs focused and explain why non-default build profiles/options were used.