Thanks for being interested in contributing! This plugin is part of the Rusty-JavaC ecosystem — it bridges the Rust-based compiler with the Gradle build system.
- Java 25+
- Kotlin 2.3+
- Gradle 9+ (use the included wrapper:
./gradlew) - Git
git clone https://github.com/CoffeePopStudio/RustyJavaC-Gradle-Plugin.git
cd RustyJavaC-Gradle-Plugin
./gradlew build./gradlew publishToMavenLocalThis publishes the plugin to your local Maven repository so you can test it in other projects.
The demo/ directory contains a sample project that uses the plugin:
./gradlew -p demo rustyJavaCJarThis compiles the demo Java sources with RustyJavaC and produces a JAR. To run it:
java -jar demo/build/libs/rustyjavac-demo.jar- Fork and clone the repo.
- Create a branch from
mainfor your changes. Use a descriptive name likefeat/source-set-supportorfix/manifest-encoding. - Make your changes. Keep commits focused — one logical change per commit.
- Run
./gradlew buildto make sure everything compiles. - Test locally by publishing to
mavenLocaland running the demo project. - Open a pull request against
main.
- Incremental compilation — Currently all sources are recompiled every time.
- Test source set support — The plugin skips
testsources; adding support would be valuable. - Configuration caching — The task is marked
@DisableCachingByDefault. Supporting caching for idempotent builds would improve performance. - Upstream compiler integration — Improving the
commandconfiguration to work more seamlessly withcargo runworkflows. - Tests — Unit tests for the plugin logic.
- Documentation — Doc comments on public API, usage examples, etc.
- Use Kotlin Gradle DSL throughout.
- Follow standard Kotlin conventions (default IntelliJ formatter settings).
- Keep the task implementation self-contained and straightforward.
- Prefer Gradle's lazy configuration APIs (
Property,ListProperty,DirectoryProperty) over eager evaluation.
We follow Conventional Commits:
type(scope): short description
| Type | When to use |
|---|---|
feat |
A new feature or capability |
fix |
A bug fix |
refactor |
Code restructuring without behavior change |
docs |
Documentation only |
chore |
Maintenance, build config, etc. |
Examples:
feat(plugin): add mainClass configuration for executable JAR
fix(task): handle empty source directories
refactor(extension): use ListProperty for command
chore: remove demo wrapper, use root wrapper instead
By contributing, you agree that your contributions will be licensed under the MIT License, same as the rest of the project.
Thanks for contributing! Even small PRs make a difference at this stage of the project.