Java
In addition to installing the JDK, you'll need to install either the Maven or Gradle build systems in your shell.
In both cases, you'll want to first activate devbox shell
before generating your Maven or Gradle projects, so that the tools use the right version of the JDK for creating your project.
Adding the JDK to your project
devbox add jdk binutils
, or in your devbox.json
"packages": [
"jdk@latest",
"binutils@latest"
],
This will install the latest version of the JDK. To find other installable versions of the JDK, run devbox search jdk
.
Other distributions of the JDK (such as OracleJDK and Eclipse Temurin) are available in Nixpkgs, and can be found using NixPkg Search
Gradle
Gradle is a popular, multi-language build tool that is commonly used with JVM projects. To setup an example project using Gradle, follow the instructions below:
- Create a project folder:
my-project/
and calldevbox init
inside it. Then add these packages:devbox add jdk
anddevbox add gradle
.- Replace
jdk
with the version of JDK you want. Get the exact nix-pkg name fromsearch.nixos.org
.
- Replace
- Then do
devbox shell
to get a shell with thatjdk
nix pkg. - Then do:
gradle init
- In the generated
build.gradle
file, put the following text block:/* build.gradle */
apply plugin: 'java'
apply plugin: 'application'
/* Change these versions to the JDK version you have installed */
sourceCompatibility = 17
targetCompatibility = 17
mainClassName = 'hello.HelloWorld'
jar {
manifest {
/* assuming main class is in src/main/java/hello/HelloWorld.java */
attributes 'Main-Class': 'hello.HelloWorld'
}
} - While in devbox shell, run
echo $JAVA_HOME
and take note of its value. - Create a
gradle.properties
file like below and put value of$JAVA_HOME
instead of <JAVA_HOME_VALUE> in the file./* gradle.properties */
org.gradle.java.home=\<JAVA_HOME_VALUE\>
- In the generated
gradle build
should compile the package and create abuild/
directory that contains an executable jar file.gradle run
should print "Hello World!".- Add
build/
to.gitignore
.
An example devbox.json
would look like the following:
{
"packages": [
"gradle",
"jdk",
"binutils"
],
"shell": {
"init_hook": null
}
}
Maven
Maven is an all-in-one CI-CD tool for building testing and deploying Java projects. To setup a sample project with Java and Maven in devbox follow the steps below:
- Create a dummy folder:
dummy/
and calldevbox init
inside it. Then add the nix-pkg:devbox add jdk
anddevbox add maven
.- Replace
jdk
with the version of JDK you want. Get the exact nix-pkg name fromsearch.nixos.org
.
- Replace
- Then do
devbox shell
to get a shell with thatjdk
nix pkg. - Then do:
mvn archetype:generate -DgroupId=com.devbox.mavenapp -DartifactId=devbox-maven-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
- In the generated
pom.xml
file, replace java version in<maven.compiler.source>
with the specific version you are testing for.
- In the generated
mvn package
should compile the package and create atarget/
directory.java -cp target/devbox-maven-app-1.0-SNAPSHOT.jar com.devbox.mavenapp.App
should print "Hello World!".- Add
target/
to.gitignore
.
An example devbox.json
would look like the following:
{
"packages": [
"maven",
"jdk",
"binutils"
],
"shell": {
"init_hook": null
}
}