Bee is a modern, open-source build automation tool focused on conventions, type safety, and performance.
Tired of complex configurations and slow build times? Bee leverages the power and familiarity of Java to define projects and build tasks, offering a flexible and highly extensible experience for developers.
Write your build logic directly in Java. Enjoy type safety, easy refactoring, powerful IDE support (completion, navigation), and seamless integration with your existing Java codebase. Forget complex DSLs or XML – stick with the language you know best.
Easily add custom tasks or modify existing ones. Simply create/implement a Java interface extending bee.Task
in your project and define/override command methods. Bee automatically discovers and prioritizes your project-specific tasks without complex configuration files.
Sensible defaults minimize the need for boilerplate configuration. Focus on your code, not the build tool setup. All settings are type-safe with IDE completion, eliminating guesswork and trips to the documentation for minor details.
Achieve significantly faster build times. Bee executes tasks in parallel whenever possible and utilizes intelligent caching to reuse outputs from previous runs, avoiding redundant work. Only build what's necessary, when it's necessary.
Bee understands source code and package repositories (like Maven/Gradle repositories). It automates the entire development lifecycle, from compiling and testing locally to packaging, publishing, and releasing your artifacts with straightforward commands.
Get started with Bee quickly using our installation scripts. Open your terminal and run the appropriate command:
Linux / macOS
curl -Ls https://git.io/install-bee | bash
Windows (Command Prompt or PowerShell)
curl -Ls https://git.io/install-bee -o install.bat && install
After installation is complete, verify that the tool was installed successfully by running:
bee -v
This should display the installed Bee version.
Here is a list of the built-in tasks available in Bee. You can get more detailed help for each task, including its specific commands and configuration options, by running bee [TaskName]:help
(e.g., bee compile:help
).
Installs and manages the Bun runtime.
Command | Description | Default |
---|---|---|
dev |
Launch development server. | |
install |
Install bun. | ✅ |
Sets up Continuous Integration configurations.
Command | Description | Default |
---|---|---|
github |
Generate CI/CD configuration files for GitHub. | |
gitignore |
Generate .gitignore file. |
|
jitpack |
Generate CI/CD configuration files for JitPack. | |
license |
Generate license file. | |
readme |
Generate readme file. | |
setup |
Setup general CI/CD configurations. | ✅ |
Cleans build output files.
Command | Description | Default |
---|---|---|
all |
Clean output directory. | ✅ |
Compiles source code.
Command | Description | Default |
---|---|---|
check |
Validate main and test sources for compilation errors. | |
project |
Compile project definition sources and resources. | |
source |
Compile main sources and resources. | ✅ |
test |
Compile test sources and resources. |
Configuration
Option | Description | Type | Default |
---|---|---|---|
useECJ |
Force use of the Eclipse Compiler for Java (ECJ). | boolean |
false |
Manages project dependencies.
Command | Description | Default |
---|---|---|
module |
Analyze and display required Java modules using jdeps. | |
tree |
Display the project dependency tree. | ✅ |
Generates project documentation.
Command | Description | Default |
---|---|---|
javadoc |
Generate project Javadoc. | ✅ |
site |
Generate project site (including docs). |
Manages Eclipse IDE project files.
Command | Description | Default |
---|---|---|
create |
Generate configuration files for Eclipse. | ✅ |
delete |
Delete configuration files for Eclipse. | |
live |
Rewrite sibling Eclipse projects to use the current project directly. | |
repository |
Rewrite sibling Eclipse projects to use the current project in repository. |
Creates a Windows executable launcher.
Command | Description | Default |
---|---|---|
build |
Generate windows exe file which executes the main class. | ✅ |
Configuration
Option | Description | Type | Default |
---|---|---|---|
icon |
Location for the .exe file icon. |
Path |
(none) |
customJRE |
Embed a custom JRE. | boolean |
true |
resources |
Additional files/dirs to package. | Set<Location> |
[] |
Finds main and agent entry point classes.
Command | Description | Default |
---|---|---|
agentmain |
Find agentmain class for Java Agent (attach API). |
|
main |
Find main class for the project. |
✅ |
premain |
Find premain class for Java Agent (startup). |
Configuration
Option | Description | Type | Default |
---|---|---|---|
main |
Specify the main class FQCN. | String |
(auto-detected) |
premain |
Specify the premain class FQCN. | String |
(none) |
agentmain |
Specify the agentmain class FQCN. | String |
(none) |
Displays help information about Bee.
Command | Description | Default |
---|---|---|
option |
Display all available command-line options. | |
task |
Display all available tasks (this list). | ✅ |
version |
Display version information for Bee, Java, and OS. | |
welcome |
Display the Bee welcome message. |
Manages general IDE project files.
Command | Description | Default |
---|---|---|
create |
Generate configuration files. | ✅ |
delete |
Delete configuration files. |
Installs project artifacts into the local repository.
Command | Description | Default |
---|---|---|
jar |
Install JAR file only into the local repository. | |
project |
Install project into the local repository. | ✅ |
Manages IntelliJ IDEA project files.
Command | Description | Default |
---|---|---|
create |
Generate configuration files for IntelliJ IDEA. | ✅ |
delete |
Delete configuration files for IntelliJ IDEA. |
Packages project artifacts into JAR files.
Command | Description | Default |
---|---|---|
document |
Package generated Javadoc into a JAR file. | |
merge |
Create an executable JAR with all dependencies included (uber-jar). | |
project |
Package project definition classes and resources into a JAR file. | |
source |
Package main classes and resources into a JAR file. | ✅ |
test |
Package test classes and resources into a JAR file. |
Configuration
Option | Description | Type | Default |
---|---|---|---|
removeDebugInfo |
Remove debug info (vars, params). | boolean |
false |
removeTraceInfo |
Remove trace info (source, lines). | boolean |
false |
packing |
Configure resource handling in the main JAR. | Function |
(identity) |
merging |
Configure resource handling when merging deps. | Function |
(identity) |
Manages license headers in source files.
Command | Description | Default |
---|---|---|
update |
Write license header comment. | ✅ |
Configuration
Option | Description | Type | Default |
---|---|---|---|
exclude |
Specify files to exclude from updates. | Predicate<File> |
(none) |
Provides Maven integration.
Command | Description | Default |
---|---|---|
pom |
Generate pom file. | ✅ |
Builds native executables using GraalVM Native Image.
Command | Description | Default |
---|---|---|
build |
Build native execution file. | ✅ |
run |
Run the native executable. |
Configuration
Option | Description | Type | Default |
---|---|---|---|
protocols |
Network protocols to include. | List<String> |
[http, https] |
resources |
Resource file patterns to include. | List<String> |
[...] |
params |
Additional parameters for Native Image builder. | List<String> |
[] |
Generates project skeletons.
Command | Description | Default |
---|---|---|
java |
Generate standard Java project skeleton. | ✅ |
Compiles and runs project tests.
Command | Description | Default |
---|---|---|
test |
Test product codes. | ✅ |
Configuration
Option | Description | Type | Default |
---|---|---|---|
longRun |
Threshold (ms) to report long-running tests. | int |
1000 |
java |
Specify the JVM used for test execution. | Directory |
(system default) |
params |
Additional JVM parameters for test execution. | List<String> |
[] |
Manages the Bee wrapper installation for the project.
Command | Description | Default |
---|---|---|
clean |
Clean local bee environment installed by the wrapper. | |
latest |
Set up wrapper to use the latest Bee release. | |
local |
Set up wrapper to use a locally installed Bee version. | |
select |
Set up wrapper using a user-selected Bee version. | |
stable |
Set up wrapper to use the latest stable Bee release. | ✅ |
use |
Set up wrapper to use a specific Bee version. |
Configuration
Option | Description | Type | Default |
---|---|---|---|
version |
Specify the Bee version for the wrapper. | String |
(latest stable) |
Bee runs on all major operating systems and requires only Java version 24 or later to run.
To check, please run java -version
on your terminal.
For any code snippet below, please substitute the version given with the version of Bee you wish to use.
Add JitPack repository at the end of repositories element in your build.xml:
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
Add it into in the dependencies element like so:
<dependency>
<groupId>com.github.teletha</groupId>
<artifactId>bee</artifactId>
<version>0.77.1</version>
</dependency>
Add JitPack repository at the end of repositories in your build.gradle:
repositories {
maven { url "https://jitpack.io" }
}
Add it into the dependencies section like so:
dependencies {
implementation 'com.github.teletha:bee:0.77.1'
}
Add JitPack repository at the end of resolvers in your build.sbt:
resolvers += "jitpack" at "https://jitpack.io"
Add it into the libraryDependencies section like so:
libraryDependencies += "com.github.teletha" % "bee" % "0.77.1"
Add JitPack repository at the end of repositories in your project().clj:
:repositories [["jitpack" "https://jitpack.io"]]
Add it into the dependencies section like so:
:dependencies [[com.github.teletha/bee "0.77.1"]]
Add it into your project definition class like so:
require("com.github.teletha", "bee", "0.77.1");
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
The overwhelming majority of changes to this project don't add new features at all. Optimizations, tests, documentation, refactorings -- these are all part of making this product meet the highest standards of code quality and usability. Contributing improvements in these areas is much easier, and much less of a hassle, than contributing code for new features.
If you come across a bug, please file a bug report. Warning us of a bug is possibly the most valuable contribution you can make to Bee. If you encounter a bug that hasn't already been filed, please file a report with an SSCCE demonstrating the bug. If you think something might be a bug, but you're not sure, ask on StackOverflow or on bee-discuss.
Bee depends on the following products on runtime.
- auto483-1.0.0
- conjure-1.2.1
- javax.inject-1
- maven-api-meta-4.0.0-alpha-7
- maven-api-model-4.0.0-alpha-7
- maven-api-xml-4.0.0-alpha-7
- maven-artifact-4.0.0-alpha-7
- maven-builder-support-4.0.0-alpha-7
- maven-model-4.0.0-alpha-7
- maven-model-builder-4.0.0-alpha-7
- maven-model-transform-4.0.0-alpha-7
- maven-repository-metadata-4.0.0-alpha-7
- maven-resolver-api-2.0.0-alpha-7
- maven-resolver-connector-basic-2.0.0-alpha-7
- maven-resolver-impl-2.0.0-alpha-7
- maven-resolver-named-locks-2.0.0-alpha-7
- maven-resolver-provider-4.0.0-alpha-7
- maven-resolver-spi-2.0.0-alpha-7
- maven-resolver-util-2.0.0-alpha-7
- maven-xml-impl-4.0.0-alpha-7
- plexus-interpolation-1.26
- plexus-utils-4.0.0
- plexus-xml-4.0.1
- psychopath-2.2.1
- sinobu-4.10.0
- slf4j-api-2.1.0-alpha1
Copyright (C) 2025 The BEE Development Team
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.