To quickly get started with development, you can use the project's Dev Container. We strongly recommend using IntelliJ.
To run the IntelliJ inside the dev container:
If the dev container is too slow, you can also setup on the host machine. To do so, must install the following dependencies:
make setup
to install Git Hooks. The commit hook formats, the pre-push hook runs tests and static analyses.make
or mvn package
make test
or mvn test
make check
or mvn verify
make format
or mvn spotless:apply
. This requires to have npm
installed.Could not find or initialize a local git repository. A repository is required
git clone
-ing. The solution is to run git init
. Note that you won't be able to push changes or create a PR since it's not a proper git repo.Fatal error compiling: invalid target release: 22
JAVA_HOME=<path to JDK 22> mvn …
JAVA_HOME=~/Library/Java/JavaVirtualMachines/openjdk-22/Contents/Home
JAVA_HOME=/usr/lib/jvm/jdk
If you have a different issue than the above, report it on GitHub.
In this project, all values are considered non-null unless specified as @Nullable
.
To enforce this, every package must have a package-info.json
with the following code:
@ParametersAreNonnullByDefault
@FieldsAreNonNullByDefault
@ReturnTypesAreNonNullByDefault
package org.prlprg.<package-name>;
import org.prlprg.util.FieldsAreNonNullByDefault;
import org.prlprg.util.ReturnTypesAreNonNullByDefault;
import javax.annotation.ParametersAreNonnullByDefault;
In IntelliJ you can simply copy package-info.json
from any package into the new one and it will automatically change the package path.