This is a multi-module Maven build. Key modules in the root build live at the repo root:
common,io,server,service,client: core Java modules (each hassrc/main/java).tests: shared test module (src/test/java).extras,apidocs,ci: supporting assets and build tooling.- Root docs like
README.md,RTMPS.md, andSSE-README.mdcapture protocol-specific notes. Note:servletexists as a standalone module but is not wired into the root build.
Use JDK 21 with Maven (no toolchains).
mvn -Dmaven.test.skip=true installbuilds all modules and jars (fast, skips tests).mvn -Dmaven.test.skip=true clean package -P assembleproduces distribution archives.mvn -Dmilestone.version=1.0.7-M1 clean package -Pmilestonebuilds a milestone tarball.mvn -DskipTests=false testruns tests for all modules (tests are skipped by default).
- Java formatting follows
red5-eclipse-format.xmlviaformatter-maven-plugin. - Indentation: 4 spaces; line endings: LF.
- Packages use
org.red5.*. Keep class names in UpperCamelCase and methods/fields in lowerCamelCase. - Run
git diff --checkbefore committing to avoid whitespace issues.
- Tests are JUnit 4 based (see root
pom.xml). - Place unit tests under
src/test/javaand mirror package names. - Prefer focused, reproducible tests; add coverage for bug fixes.
- Commit messages in history are short, imperative, and task-focused (e.g., "Fix RTMP timestamp handling", "Update version").
- Create topic branches off
masterand submit PRs from forks. - PRs should describe the change, reference issues, and include tests where applicable.
- TLS/RTMPS notes live in
RTMPS.md. Review before changing SSL or transport settings. - If you touch protocol code, update any related docs or examples.