A simple build system for Java.
How does a basic pottery definition look like? Well, this repository is already built and released using pottery! You can take a look at a real, working pottery definition opening the pottery.yaml file.
Build system complexity is real and spends resources and frustrates teams. Other full-fledged build systems like Maven and Gradle are wonderful, but adapting them to each team conventions is time-consuming.
Not all projects require complex setups and plugins. Lightweight configurations based on conventions are effective for on-boarding new teams and scaling new projects. The Spring Initializr is a well-designed example on how to handle conventions effectively. It's relatively simple to use, it's easy to understand by new joiners, and just works for most of the use cases.
Pottery aims to lower the complexity of managing a Java project by building on top of conventions, instead of complex configurations. Pottery design principles are:
- Simplicity over completeness
- Aim for most of the projects, not all of them.
- Performance is one of the main levers of a team's Developer Experience.
- Integrate with modern development practices as smooth as possible.
- Easy to use on CI, no complex configurations.
Pottery requires at least Java 17 (the latest LTS) to run. You can download the OpenJDK 17 from Adoptium.
Download the latest version of the pottery wrapper with curl and add execution rights.
curl -s -L https://github.com/kmruiz/pottery/releases/latest/download/pottery.sh > pottery.sh && chmod +x pottery.sh
And initialise a project for the JDK 18.
./pottery.sh init example-project group id 1.0.0 -j 18 -p fatjar
cp pottery.sh example-project/
cd example-project
Now you can package and execute the fat jar.
./pottery.sh package
java -jar target/id-1.0.0-fat.jar
You can read the documentation in our web page.