Welcome to spin, a Modular Java-based Program Inference and Execution Engine for the purpose of automating modular
build execution.
The goal of spin is to provide the necessary infrastructure to:
- Compile, test, debug, package and deploy Modular (Java) Applications
- Integrate with VSCode and/or other Language Server-based Development Environments to support rich IDE experiences.
More information about
spin, philosophy and concepts is covered in thespinoverview.
To bootstrap, build and run spin you MUST do the following:
- Install both the Java 8 and 25 Java Development Kits.
We recommend using Azul Open JDK distributions.
spinis written using Java 25 and thus to develop, compile, test, Java 25 is required.
spinis also designed to work with Java 8, thus for testing it,spinalso requires a Java 8 Development Kit to be installed.
spinwill automatically determine where Java Development Kits are installed, however it currently won't install them for you!
- Create and Configure an Apache Maven Settings file in
~/.m2/settings.xml
This allows spin to resolve dependencies, including those dynamically requested by Plugins.
spininternally uses the Apache Maven libraries (not the commandline) to resolve dependencies and interact with Artifact Repositories, including Maven Central.
To initially bootstrap spin (without using itself), the Apache Maven (wrapper) is used. Once this is
achieved, spin can be used for building itself and anything else you would like to spin.
The following shell command, executed in the top-level spin folder, will request Apache Maven to build
spin:
./mvnw clean package
This will compile, test and package spin. Once this has successfully completed the following assets
will be available.
-
The
./spin.build/spin/.build/spinfolder will contain a custom Java Runtime Image forspin(produced by jlink). -
The
./spin.build/spin/target/folder will contain aspin-<version>-bin.zipfile of the aforementioned Java Runtime Image.
You can move this folder into your executable applications area, set a path to spin/bin, and
then execute spin using:
./spin.sh
in any folder.
For example, after this executing the following, within the spin source tree, will cause spin to build itself.
./spin.sh clean package
-
To configure code formatting for IntelliJ, please import the scheme defined at
configs/idea/intellij-idea-workday-java-code-style.xml. -
To configure checkstyle, use the configuration in
checkstyle/checkstyle.xml -
The coding-conventions are documented here. Please Follow Them!