# Keycloak on Quarkus The module holds the codebase to run Keycloak on top of [Quarkus](https://quarkus.io/): ├── deployment │   ├── Build-time codebase with all the necessary steps to build and configure the server │ ├── runtime │   ├── Runtime codebase with all the runtime code │ └── server ├── The server itself, only responsible for generating the server artifacts ## Activating the Module The module isn't enabled by default. To enable it please activate the `quarkus` profile. ## Building To build the module and produce the artifacts to run a server: mvn -f ../pom.xml clean install -DskipTestsuite -DskipExamples -DskipTests -Pquarkus ### Building the Distribution To build the module as well as the distribution packages: mvn -f ../pom.xml clean install -DskipTestsuite -DskipExamples -DskipTests -Pquarkus,distribution The distribution packages (ZIP and TAR) should be available at [../distribution/server-x](../distribution/server-x/target). ## Running java -jar server/target/lib/quarkus-run.jar ## Contributing ### Development Mode To run the server in development mode: cd server mvn compile quarkus:dev You should be able to attach your debugger to port `5005`. Changes to files such as `server/src/main/resources` or `server/src/main/resources/META-INF/keycloak.properties` should be recognized automatically when running in development mode. However, considering that there is no real code in the `server` module (but from `runtime` and its dependencies), changes you make to dependencies (e.g: services, model, etc) won't be reflected into the running server. However, you can still leverage the hot reload capabilities from your IDE to make changes at runtime. NOTE: We need to improve DevX and figure out why changes to dependencies are not being recognized when running tests or running Quarkus Dev Mode.