Skip to content

Workday/spin.build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spin

A modular Java build system that infers what to do by inspecting project structure — no build scripts required.

CI Maven Central License

Overview

spin discovers pluggable Extensions via ServiceLoader, each of which auto-detects what it applies to and declares task dependencies via annotations. It then executes a dependency-ordered graph of tasks to compile, test, package, and deploy modular Java applications. See overview.md for a deeper look at the design.

Modules

Module Purpose
spin-api All public interfaces and annotations
spin-common DefaultProgram: program inference and execution
spin-engine DefaultEngine: ServiceLoader discovery, workspace and project tree
spin Spin.main() CLI entry point; produces jlink runtime image
spin-modules Pluggable extension modules: java, maven, junit, git, config, and more
spin-testing WorkspaceDiscovery JUnit 5 extension for integration tests
spin-collider Subprocess launcher for integration tests requiring a running server

Requirements

  • Java 8 and Java 25 (both required — see note below)
  • Maven (wrapper included — no separate install needed)
  • ~/.m2/settings.xml configured with a Maven repository (e.g. Maven Central)

spin is written in Java 25 and built and tested against Java 25. It is also designed to build Java 8 projects, so a Java 8 JDK must be installed for the test suite to pass. spin will locate both JDKs automatically but will not install them for you. We recommend Azul Zulu builds for both.

Using this Library

Add individual modules as dependencies. All modules share the same version:

<dependency>
    <groupId>build.spin</groupId>
    <artifactId>spin-api</artifactId>
    <version>VERSION</version>
</dependency>

Replace VERSION with the latest version shown in the Maven Central badge above.

Building from Source

Bootstrap using the Maven wrapper (required before spin can build itself):

./mvnw clean install

This produces a distributable zip at spin/target/spin-<version>-bin.zip. To install it locally and add spin to your PATH in one step:

./install-dev.sh

Or to rebuild and install in one go:

./install-dev.sh --build

Contributing

Code style is enforced by Checkstyle: no tabs, no star imports, final locals and parameters, braces required on all blocks, no assert statements. Import order: third-party, standard Java, then static. IntelliJ configuration is at config/intellij/CodeStyle.xml.

Commit messages follow Conventional Commits.

License

Apache 2.0 — see LICENSE

About

A modular program inference engine and build solution for modular applications

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages