https://github.com/sake92/deder
Config based client-server JVM build tool
https://github.com/sake92/deder
build-tool java scala scalajs scalanative
Last synced: 3 days ago
JSON representation
Config based client-server JVM build tool
- Host: GitHub
- URL: https://github.com/sake92/deder
- Owner: sake92
- License: apache-2.0
- Created: 2025-11-14T17:55:07.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2026-05-27T19:01:04.000Z (7 days ago)
- Last Synced: 2026-05-27T21:04:32.347Z (7 days ago)
- Topics: build-tool, java, scala, scalajs, scalanative
- Language: Scala
- Homepage: https://sake92.github.io/deder/
- Size: 2.14 MB
- Stars: 11
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Deder
Config based, concurrent-first, client-server JVM build tool.
:construction: Work in progress, expect rough edges and breaking changes.
Feedback and [contributions](CONTRIBUTING.md) are very welcome! :heart:
## Current status and features
- CLI client with shell completions
- BSP client with support for VSCode and IntelliJ
- exploring the build with listing modules, tasks, and execution plans (visualized as DOT graphs)
- packaging module as JAR, uber JAR, Scala.js bundle, Scala Native executable
- executing tests
- module REPL
- watch mode with concurrent execution in multiple terminals
- import from sbt
- OTEL tracing support
- basic plugins support with automatic reloading
## Adoption and feedback
Deder is used in some of my OSS projects:
- https://github.com/sake92/deder (yes, it bootstraps itself!)
- https://github.com/sake92/sharaf
- https://github.com/sake92/regenesca
- https://github.com/sake92/squery
- https://github.com/sake92/tupson
## Concepts
- *project* is the root of your git repo
- *module* is a "subproject", like `common`/`frontend`/`app`..
- *task* is something you can run on a module, like `compile`/`test`/`run`/`assembly`..
The [examples](examples) folder has working projects that show you how to use Deder to build, cross-build, test, publish, and use Scala.js / Scala Native.
## Installation
Deder needs JDK 21+.
### macOS and Linux (Homebrew)
```shell
brew tap sake92/tap
brew install deder
```
### Windows 10+
```shell
scoop bucket add sake92 https://github.com/sake92/scoop-bucket.git
scoop install deder
```
### Manual installation
1. download `deder-client.jar` (or a native version) from [early release](https://github.com/sake92/deder/releases/tag/early-access)
1. rename it to just `deder`
1. do `chmod +x deder`
1. put it in `PATH`
## Common commands
```shell
deder exec # compile all modules (default task)
deder exec -t compile -m common # compile a specific module
deder exec -t test # run all tests
deder exec -t test -m mymod-test # run tests for one module
deder exec -t assembly -m app # build an uber JAR
deder exec -t run -m app --watch # run with file-watching
deder import # import project from sbt
deder bsp install # write BSP config for IDE import
deder shutdown # stop the background server
```
For the full command reference see the [Cheatsheet](https://sake92.github.io/deder/reference/cheatsheet.html).
## IDE setup
Run `deder bsp install` and just open with VSCode or IntelliJ (open as a BSP project).
The `reset.sh` script does this for you in examples...
Supported features:
- import of project
- navigation
- compilation and diagnostics
- run main classes
- run tests
If you work on server code, after you build it you can run `./reset.sh` in examples/multi
## Plugins
Deder supports custom tasks via a plugin API.
See the [Plugins how-to](https://sake92.github.io/deder/howtos/plugins.html) to get started.
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for how to build Deder locally, run integration tests, setup tracing etc.