- Each plugin lives in its own directory (for example
adminplugin/,authplugin/,cluster/,mqtt/,rtspplugin/,securityplugin/). - Plugin source code follows Maven layout (
src/main/java,src/main/resources). - The root
pom.xmlis primarily a parent/management POM; most plugins are built from their own directories. - Build artifacts land in each module’s
target/directory; dependency jars may be copied totarget/dependency/.
Run commands from the plugin directory you are working on unless noted.
mvn -Dmaven.test.skip=true packagebuilds a plugin jar while skipping tests.mvn dependency:copy-dependenciesdownloads runtime dependencies intotarget/dependency/.mvn clean dependency:copy-dependencies packageis whatbuild.shruns for a full clean build.mvn eclipse:eclipsegenerates Eclipse project files (seeREADME.md).
- Java: 4-space indentation, braces on the same line, and standard Java naming (classes
UpperCamelCase, methods/fieldslowerCamelCase). - Keep package names under
org.red5.server.plugin.*as established. - Prefer small, focused classes and avoid adding new dependencies unless required.
- Tests are minimal in this repo. Add tests in
src/test/javawhen introducing non-trivial logic. - Name tests
*Test.javaand run withmvn testfrom the module directory. - If tests are intentionally skipped, mention why in the PR description.
- Commit messages are short, sentence-style summaries (for example “Bump spring-security-core in /adminplugin”).
- Mention the module path when a change is localized.
- PRs should include: purpose/summary, affected modules, and any manual verification steps.
- If configuration changes are required (for example MQTT XML beans), call them out explicitly.
- Some scripts (like
deploy.sh) are environment-specific and contain hard-coded paths; avoid using them as-is. - Plugin dependencies copied to Red5 should not duplicate jars already present in
red5/lib.