$$$$$$$\ $$\ $$$$$$$\ $$\
$$ __$$\ $$ | $$ __$$\ $$ |
$$ | $$ |$$\ $$\ $$ | $$\ $$$$$$\ $$ | $$ | $$$$$$\ $$$$$$$\ $$ | $$\
$$ | $$ |$$ | $$ |$$ | $$ |$$ __$$\ $$$$$$$\ | \____$$\ $$ __$$\ $$ | $$ |
$$ | $$ |$$ | $$ |$$$$$$ / $$$$$$$$ | $$ __$$\ $$$$$$$ |$$ | $$ |$$$$$$ /
$$ | $$ |$$ | $$ |$$ _$$< $$ ____| $$ | $$ |$$ __$$ |$$ | $$ |$$ _$$<
$$$$$$$ |\$$$$$$ |$$ | \$$\ \$$$$$$$\ $$$$$$$ |\$$$$$$$ |$$ | $$ |$$ | \$$\
\_______/ \______/ \__| \__| \_______| \_______/ \_______|\__| \__|\__| \__|
This project uses Quarkus, the Supersonic Subatomic Java Framework.
NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
Recommended: To create the bank schema, run this interactive bash script to be able to reset and restart the container at runtime.
# Give executable permission and run the shell script
chmod +x postgres-local.sh && ./postgres-local.sh
# Start Quarkus dev-mode for live coding
./mvnw clean compile quarkus:dev
Alternative: You could also run docker-compose directly.
# Start the container
docker-compose -f postgres-local.yaml up --detach
# Set the app to regenerate the database schema on every reload
./mvnw clean compile quarkus:dev -Dquarkus.args=regenerate-bank-schema
Or you could let Dev Services starts the database container automatically via Testcontainers.
mvn clean compile quarkus:dev -Dquarkus.args=regenerate-bank-schema -Dquarkus.datasource.devservices.enabled=true
The application can be packaged using:
./mvnw package
It produces the quarkus-run.jar
file in the target/quarkus-app/
directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/quarkus-app/lib/
directory.
The application is now runnable using java -jar target/quarkus-app/quarkus-run.jar
.
If you want to build an über-jar, execute the following command:
./mvnw package -Dquarkus.package.type=uber-jar
The application, packaged as an über-jar, is now runnable using java -jar target/*-runner.jar
.
You can create a native executable using:
./mvnw package -Dnative
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
./mvnw package -Dnative -Dquarkus.native.container-build=true
You can then execute your native executable with: ./target/duke-backend-1.0.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.