Documentation Index
Fetch the complete documentation index at: https://docs.reasonos.com/llms.txt
Use this file to discover all available pages before exploring further.
Java SDK
RBS provides comprehensive Java support with automatic JDK management, Maven-compatible dependency resolution, JUnit 5 auto-inclusion, Spring Boot support, linting, and container image building.
Setup
Register a Java toolchain in WORKSPACE.rbs. RBS automatically downloads the JDK.
load("@rbs//java/toolchain.rbs", "java_toolchain", "java_test_deps")
# Auto-downloads JDK 17
java_toolchain(name = "java", version = "17.0.11")
# Auto-installs JUnit 5 for tests
java_test_deps()
Dependencies
Define external Java packages using java_repository. Supports Maven coordinates.
load("@rbs//java/dependencies.rbs", "java_repository")
java_repository(
name = "spring_boot_web",
package = "org.springframework.boot:spring-boot-starter-web",
version = "3.2.2",
)
Rules
java_library
Creates a reusable Java library (JAR).
load("@rbs//java/rules.rbs", "java_library")
java_library(
name = "springboot_lib",
srcs = [
"src/main/java/com/example/springboot/Application.java",
"src/main/java/com/example/springboot/GreetingService.java",
"src/main/java/com/example/springboot/Calculator.java",
],
deps = [
"@external://org_springframework_boot_spring_boot_starter_web:3.2.2",
],
)
| Attribute | Type | Description |
|---|
name | string | Unique target name (required). |
srcs | list | Java source files. |
deps | list | Dependencies (local or @external://). |
resources | list | Resource files to include in the JAR. |
java_binary
Creates an executable Java application.
load("@rbs//java/rules.rbs", "java_binary")
java_binary(
name = "app",
srcs = glob(["src/main/java/**/*.java"]),
main = "com.example.springboot.Application",
resources = ["src/main/resources/application.properties"],
deps = [
"@external://org_springframework_boot_spring_boot_starter_web:3.2.2",
],
javaopts = ["-Djava.awt.headless=true", "-Xmx512m"],
)
| Attribute | Type | Description |
|---|
name | string | Unique target name (required). |
srcs | list | Java source files. |
main | string | Fully qualified main class (required). |
deps | list | Dependencies. |
resources | list | Resource files (e.g., application.properties). |
javaopts | list | JVM options. |
java_test
Runs Java tests. JUnit 5 is automatically included — no manual dependency required.
load("@rbs//java/rules.rbs", "java_test")
# Unit test — just depend on the code being tested
java_test(
name = "greeting_service_test",
srcs = [
"src/main/java/com/example/springboot/GreetingService.java",
"src/test/java/com/example/springboot/GreetingServiceTest.java",
],
deps = [
"@external://org_springframework_boot_spring_boot_starter_web:3.2.2",
],
args = ["--select-class=com.example.springboot.GreetingServiceTest"],
)
# Full test suite
java_test(
name = "all_tests",
srcs = glob(["src/main/java/**/*.java", "src/test/java/**/*.java"]),
deps = [
"@external://org_springframework_boot_spring_boot_starter_web:3.2.2",
],
args = [
"--select-package=com.example.springboot",
"--include-classname=.*Test",
],
)
| Attribute | Type | Description |
|---|
name | string | Unique target name (required). |
srcs | list | Test and source files. |
deps | list | Dependencies. |
args | list | JUnit 5 console launcher arguments. |
java_lint
Runs static analysis on Java source files.
load("@rbs//java/rules.rbs", "java_lint")
java_lint(
name = "app_lint",
srcs = glob(["src/main/java/**/*.java"]),
)
Example: Spring Boot Application
WORKSPACE.rbs
BUILD.rbs
Commands
load("@rbs//java/toolchain.rbs", "java_toolchain", "java_test_deps")
load("@rbs//java/dependencies.rbs", "java_repository")
java_toolchain(name = "java", version = "17.0.11")
java_test_deps()
java_repository(
name = "spring_boot_web",
package = "org.springframework.boot:spring-boot-starter-web",
version = "3.2.2",
)
load("@rbs//java/rules.rbs", "java_binary", "java_library", "java_test", "java_lint")
load("@rbs//oci/rules.rbs", "oci_image")
java_library(
name = "springboot_lib",
srcs = glob(["src/main/java/**/*.java"]),
deps = ["@external://org_springframework_boot_spring_boot_starter_web:3.2.2"],
)
java_binary(
name = "app",
srcs = glob(["src/main/java/**/*.java"]),
main = "com.example.springboot.Application",
resources = ["src/main/resources/application.properties"],
deps = ["@external://org_springframework_boot_spring_boot_starter_web:3.2.2"],
javaopts = ["-Djava.awt.headless=true"],
)
java_test(
name = "greeting_service_test",
srcs = [
"src/main/java/com/example/springboot/GreetingService.java",
"src/test/java/com/example/springboot/GreetingServiceTest.java",
],
deps = ["@external://org_springframework_boot_spring_boot_starter_web:3.2.2"],
args = ["--select-class=com.example.springboot.GreetingServiceTest"],
)
java_lint(
name = "app_lint",
srcs = glob(["src/main/java/**/*.java"]),
)
oci_image(
name = "image",
binary = ":app",
base = "ubuntu:22.04",
env = {"JAVA_OPTS": "-Djava.awt.headless=true"},
tag = "springboot-example:latest",
)
rbs build app # Build the application
rbs run app # Run Spring Boot server
rbs test greeting_service_test # Run specific test
rbs test all_tests # Run all tests
rbs build app_lint # Lint code
rbs build image # Build container image