08838f77ca
Closes #20882
91 lines
3.3 KiB
Markdown
91 lines
3.3 KiB
Markdown
## Building from source
|
|
|
|
Ensure you have JDK 11 (or newer) and Git installed
|
|
|
|
java -version
|
|
git --version
|
|
|
|
Instead of using a locally installed Maven, call the Maven wrapper script `mvnw` in the main folder of the project.
|
|
This will use the Maven version which is supported by this project.
|
|
|
|
---
|
|
First clone the Keycloak repository:
|
|
|
|
git clone https://github.com/keycloak/keycloak.git
|
|
cd keycloak
|
|
|
|
To build Keycloak run:
|
|
|
|
./mvnw clean install
|
|
|
|
This will build all modules and run the testsuite.
|
|
|
|
To build the ZIP distribution run:
|
|
|
|
./mvnw clean install -Pdistribution
|
|
|
|
Once completed you will find distribution archives in `distribution`.
|
|
|
|
To build only the server run:
|
|
|
|
./mvnw -Pdistribution -pl quarkus/dist -am -Dmaven.test.skip clean install
|
|
|
|
---
|
|
**NOTE**
|
|
|
|
Classes from `org.keycloak.testsuite.*` packages aren't suitable to be used in production.
|
|
|
|
---
|
|
|
|
This project contains opt-in support for incremental Maven builds using the [Apache Maven Build Cache Extension](https://github.com/apache/maven-build-cache-extension) which is disabled by default.
|
|
|
|
To enable it for a single Maven command execution, enable it as follows:
|
|
|
|
./mvnw -D -Dmaven.build.cache.enabled=true ...
|
|
|
|
To enable it by default, add it to the `MAVEN_OPTS` environment variable:
|
|
|
|
export MAVEN_OPTS="-Dmaven.build.cache.enabled=true"
|
|
|
|
### Building Quarkus Distribution
|
|
|
|
Please, take a look at this [documentation](../quarkus/README.md).
|
|
|
|
## Starting Keycloak
|
|
|
|
To start Keycloak during development first build as specified above, then run:
|
|
|
|
./mvnw -f testsuite/utils/pom.xml exec:java -Pkeycloak-server
|
|
|
|
When running testsuite, by default an account with username `admin` and password `admin` will be created within the master realm at start.
|
|
|
|
To stop the server press `Ctrl + C`.
|
|
|
|
## Working with the codebase
|
|
|
|
We don't currently enforce a code style in Keycloak, but a good reference is the code style used by WildFly. This can be
|
|
retrieved from [Wildfly ide-configs](https://github.com/wildfly/wildfly-core/tree/main/ide-configs).To import formatting
|
|
rules, see following [instructions](http://community.jboss.org/wiki/ImportFormattingRules).
|
|
|
|
If your changes require updates to the database read [Updating Database Schema](updating-database-schema.md).
|
|
|
|
If your changes require introducing new dependencies or updating dependency versions please discuss this first on the
|
|
dev mailing list. We do not accept new dependencies to be added lightly, so try to use what is available.
|
|
|
|
### Building project from the IDE
|
|
|
|
Some parts of the project rely on generated code using Maven plugins. These steps might be skipped when building using
|
|
IDE resulting in compilation errors. To work around this make sure to build the project first using Maven. After the
|
|
initial build with Maven you should be able to build the project using the IDE as it will use the classes previously
|
|
generated by Maven plugins. Make sure you don't rebuild the whole project using the IDE as it would delete the generated
|
|
classes. E.g. in IntelliJ IDEA use `Build → Build Project` instead of `Build → Rebuild Project`.
|
|
|
|
---
|
|
**NOTE**
|
|
|
|
If you are building the Operator from your IDE, make sure to build the project with the `operator` profile enabled in Maven
|
|
as it's excluded by default:
|
|
|
|
./mvnw clean install -Poperator -DskipTests
|
|
|
|
---
|