quarkus-tryout

Java CI with Gradle Docker

This project uses Quarkus, the Supersonic Subatomic Java Framework.

If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .

Running the application in dev mode

You can run your application in dev mode that enables live coding using:

./gradlew quarkusDev

Windows: gradlew quarkusDev

NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.

→ Swagger-UI: http://localhost:8080/q/swagger-ui/

Packaging and running the application

The application can be packaged using:

./gradlew build

It produces the quarkus-run.jar file in the build/quarkus-app/ directory. Be aware that it’s not an über-jar as the dependencies are copied into the build/quarkus-app/lib/ directory.

If you want to build an über-jar, execute the following command:

./gradlew build -Dquarkus.package.type=uber-jar

The application is now runnable using java -jar build/quarkus-app/quarkus-run.jar.

Creating a native executable

Make sure, GraalVM & native-image is installed: gu install native-image

You can create a native executable using:

./gradlew build -Dquarkus.package.type=native

Or, if you don't have GraalVM installed, you can run the native executable build in a container using (producing a Linux executable):

./gradlew build build -Dquarkus.package.type=native -Dquarkus.native.container-build=true

You can then execute your native executable with: ./build/**runner

If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling.

Building and Running in Docker

build-it-yourself:

docker-compose up --build

pre-built:

docker run --rm --name="quarkus-tryout" -p 8080:8080 ghcr.io/d-led/quarkus-tryout:master

http://localhost:8080/hello/multiply?a=11&b=32

Testing

  • run all the tests: gradle test
  • run all tests marked to be run in native mode (no injection due to the compilation mode): gradle testNative
  • mutation testing: gradle pitest → open build/reports/pitest/index.htmlReplaced integer multiplication with addition → SURVIVED → adding another test case for a full mutation coverage → ok
  • property-based testing: gradle jqwik --infoProperty [MathsProperties:multiplying positive numbers returns positive number] failed with sample {0=3379, 1=635539}
  • try out the endpoint: gradle quarkusDevhttp://localhost:8080/hello/multiply?a=11&b=3

Related Guides

  • RESTEasy JAX-RS (guide): REST endpoint framework implementing JAX-RS and more

Provided Code

RESTEasy JAX-RS

Easily start your RESTful Web Services

Related guide section...

How this project was created

mvn io.quarkus:quarkus-maven-plugin:2.0.3.Final:create \
    -DprojectGroupId=com.github.d.led \
    -DprojectArtifactId=quarkus-tryout \
    -DprojectVersion=0.0.1 \
    -DclassName="com.github.d.led.controllers.Tryout" \
    -Dextensions="resteasy,resteasy-jackson" \
    -DbuildTool=gradle