Want to contribute? Great! We try to make it easy, and all contributions, even the smaller ones, are more than welcome. This includes bug reports, fixes, documentation, examples... But first, read this page (including the small print at the end).
All original contributions to Quarkus are licensed under the ASL - Apache License, version 2.0 or later, or, if another license is specified as governing the file or directory being modified, such other license.
All contributions are subject to the Developer Certificate of Origin (DCO). The DCO text is also included verbatim in the dco.txt file in the root directory of the repository.
This project uses GitHub issues to manage the issues. Open an issue directly in GitHub.
If you believe you found a bug, and it's likely possible, please indicate a way to reproduce it, what you are seeing and what you would expect to see. Don't forget to indicate your Java, Maven and GraalVM version.
To contribute, use GitHub Pull Requests, from your own fork.
All submissions, including submissions by project members, need to be reviewed before being merged.
Because we are all humans, the project uses a continuous integration approach and each pull request triggers a full build. Please make sure to monitor the output of the build and act accordingly.
Don't forget to include tests in your pull requests. Also don't forget the documentation (reference documentation, javadoc...).
Be sure to test your pull request in:
- Java mode
- Native mode
If you have not done so on this machine, you need to:
- Install Git and configure your GitHub access
- Install Java SDK (OpenJDK recommended)
- Install GraalVM (community edition is enough)
- Install platform C developer tools:
- Linux
- Make sure headers are available on your system (you'll hit 'Basic header file missing (<zlib.h>)' error if they aren't).
- On Fedora
sudo dnf install zlib-devel
- Otherwise
sudo apt-get install libz-dev
- On Fedora
- Make sure headers are available on your system (you'll hit 'Basic header file missing (<zlib.h>)' error if they aren't).
- macOS
xcode-select --install
- Linux
- Set
GRAALVM_HOME
to your GraalVM Home directory e.g./opt/graalvm
on Linux or$location/JDK/GraalVM/Contents/Home
on macOS
Docker is not strictly necessary: it is used to run the MariaDB and PostgreSQL tests which are not enabled by default. However it is a recommended install if you plan to work on Quarkus JPA support:
- Check the installation guide, and the MacOS installation guide
- If you just install docker, be sure that your current user can run a container (no root required). On Linux, check the post-installation guide
Quarkus has a strictly enforced code style. Code formatting is done by the Eclipse code formatter, using the config files
found in the ide-config
directory. By default when you run ./mvnw install
the code will be formatted automatically.
When submitting a pull request the CI build will fail if running the formatter results in any code changes, so it is
recommended that you always run a full maven build before submitting a pull request.
Open the Preferences window, and then navigate to Java -> Code Style -> Formatter. Click Import and then
select the eclipse-format.xml
file in the ide-config
directory.
Next navigate to Java -> Code Style -> Organize Imports. Click Import and select the eclipse.importorder
file.
Open the Preferences window, navigate to Plugins and install the Eclipse Code Formatter Plugin.
Restart you IDE, open the Preferences window again and navigate to Other Settings -> Eclipse Code Formatter.
Select Use the Eclipse Code Formatter, then change the Eclipse Java Formatter Config File to point to the
eclipse-formatter.xml
file in the ide-config
directory. Make sure the Optimize Imports box is ticked, and
select the eclipse.importorder
file as the import order config file.
- Clone the repository:
git clone https://github.com/quarkusio/quarkus.git
- Navigate to the directory:
cd quarkus
- Invoke
./mvnw clean install
from the root directory
git clone https://github.com/quarkusio/quarkus.git
cd quarkus
./mvnw clean install
# Wait... success!
The default build will create two different native images, which is quite time consuming. You can skip this
by disabling the native-image
profile: ./mvnw install -Dno-native
.
By default the build will use the native image server. This speeds up the build, but can cause problems due to the cache
not being invalidated correctly in some cases. To run a build with a new instance of the server you can use
./mvnw install -Dnative-image.new-server=true
.
This project is an open source project, please act responsibly, be nice, polite and enjoy!