# test-quarkus This project uses Quarkus, the Supersonic Subatomic Java Framework. If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ . ## Building and deploying natively Build the native image with the Mandrel-based multi-stage Dockerfile and push it directly to a remote Docker host via [unregistry](https://github.com/psviderski/unregistry) (no external registry required; only missing layers are transferred over SSH): ```shell script ./scripts/build-and-push.sh --remote deploy@prod.example.com ``` The script reads `artifactId` and `version` from `pom.xml` for the image name and tag, builds for `linux/amd64`, and verifies the image is present on the remote after pushing. See `./scripts/build-and-push.sh --help` for all flags. It can be invoked from any directory: by default it resolves the project root from the script's own location. Override with `--project-dir PATH` or the `PROJECT_DIR` environment variable when needed. ### SSH config aliases `--remote` accepts either an explicit `user@host[:port]` or a bare alias that is resolved from `~/.ssh/config`. The matching `Host` block supplies `HostName`, `User`, `Port` and `IdentityFile` automatically: ```text # ~/.ssh/config Host prod HostName prod.example.com User deploy Port 22 IdentityFile ~/.ssh/deploy_ed25519 ``` ```shell script ./scripts/build-and-push.sh --remote prod # Resolves to deploy@prod.example.com:22 using ~/.ssh/deploy_ed25519 ``` `--ssh-key` always overrides the config `IdentityFile`. Use `--ssh-config PATH` to point at a non-default config file. ## Running the application in dev mode You can run your application in dev mode that enables live coding using: ```shell script ./mvnw compile quarkus:dev ``` > **_NOTE:_** Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/. ## Packaging and running the application The application can be packaged using: ```shell script ./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: ```shell script ./mvnw package -Dquarkus.package.type=uber-jar ``` The application, packaged as an _über-jar_, is now runnable using `java -jar target/*-runner.jar`. ## Creating a native executable You can create a native executable using: ```shell script ./mvnw package -Dnative ``` Or, if you don't have GraalVM installed, you can run the native executable build in a container using: ```shell script ./mvnw package -Dnative -Dquarkus.native.container-build=true ``` You can then execute your native executable with: `./target/test-quarkus-1.0.0-SNAPSHOT-runner` If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling. ## Related Guides - REST Jackson ([guide](https://quarkus.io/guides/rest#json-serialisation)): Jackson serialization support for Quarkus REST. This extension is not compatible with the quarkus-resteasy extension, or any of the extensions that depend on it - SmallRye Health ([guide](https://quarkus.io/guides/smallrye-health)): Monitor service health ## Provided Code ### REST Easily start your REST Web Services [Related guide section...](https://quarkus.io/guides/getting-started-reactive#reactive-jax-rs-resources) ### SmallRye Health Monitor your application's health using SmallRye Health [Related guide section...](https://quarkus.io/guides/smallrye-health)