# Quarkus Maven Plugin

The Quarkus Maven Plugin builds the Quarkus applications, and provides helpers to launch dev mode or build native executables. For more information about how to use the Quarkus Maven Plugin, please refer to the Maven Tooling guide.

## Discover Maven goals

Like most Maven plugins, the Quarkus Maven Plugin has a `help` goal that prints the description of the plugin, listing all available goals as well as their description. It is also possible to print out detailed information about a goal, all its parameters and their default values. For instance, to see the help for the `create` goal, run:

    ./mvnw quarkus:help -Ddetail -Dgoal=create

## Maven goals reference

Here is the list of all the Quarkus Maven Plugin goals:

### quarkus:add-extension

Allow adding an extension to an existing pom.xml file. Because you can add one or several extension in one go, there are 2 mojos: add-extensions and add-extension. Both supports the extension and extensions parameters.

Parameter | Type | Default value
--- | --- | ---
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
extension For usability reason, this parameter allows adding a single extension. | `String` |
extensions The list of extensions to be added. | `Set` |
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:add-extensions

Allow adding extensions to an existing pom.xml file. Because you can add one or several extension in one go, there are 2 mojos: add-extensions and add-extension. Both supports the extension and extensions parameters.

Parameter | Type | Default value
--- | --- | ---
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
extension For usability reason, this parameter allows adding a single extension. | `String` |
extensions The list of extensions to be added. | `Set` |
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:analyze-call-tree

Analyze call tree of a method or a class based on an existing report produced by Substrate when using -H:+PrintAnalysisCallTree, and does a more meaningful analysis of what is causing a type to be retained.

Parameter | Type | Default value
--- | --- | ---
className | `String` | `${class}`
methodName | `String` | `${method}`
reportsDir | `File` | `${project.build.directory}/reports`

### quarkus:build

Builds the Quarkus application.

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
attachRunnerAsMainArtifact Whether to replace the original JAR with the Uber runner JAR as the main project artifact | `boolean` |
attachSboms Whether to attach SBOMs generated for Uber JARs as project artifacts | `boolean` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
buildDirectory | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
finalName | `String` | `${project.build.finalName}`
generatedSourcesDirectory The directory for generated source files. | `File` | `${project.build.directory}/generated-sources`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
pluginRepos The project’s remote repositories to use for the resolution of plugins and their dependencies. | `List` (required) | `${project.remotePluginRepositories}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
quarkus.build.skip Skips the execution of this mojo | `boolean` | `false`
skipOriginalJarRename When the building an Uber JAR, the default JAR is renamed by adding .original suffix. Enabling this property will disable the renaming of the original JAR. | `boolean` |
systemProperties The list of system properties defined for the plugin. | `Map` |

### quarkus:create

This goal helps in setting up Quarkus Maven project with quarkus-maven-plugin, with sensible defaults

Parameter | Type | Default value
--- | --- | ---
appConfig | `String` |
platformArtifactId Artifact ID of the target platform BOM | `String` |
platformGroupId Group ID of the target platform BOM | `String` |
platformVersion Version of the target platform BOM | `String` |
buildTool | `String` | `MAVEN`
className The className will define the generated class names when picking only one of those extensions REST, RESTEasy Classic and Spring-Web. If more than one of those extensions are picked, then only the package name part will be used as packageName More info: https://github.com/quarkusio/quarkus/issues/14437 By default, the projectGroupId is used as package for generated classes (you can also use packageName to have them different). className | `String` |
data | `String` |
example | `String` |
extensions | `Set` |
javaVersion Version of Java used to build the project. | `String` |
noCode When true, do not include any code in the generated Quarkus project. | `boolean` | `false`
outputDirectory | `File` | `${basedir}`
packageName Set the package name of the generated classes. If not set, projectGroupId will be used as packageName packageName | `String` |
path The path will define the REST path of the generated code when picking only one of those extensions REST, RESTEasy Classic and Spring-Web. If more than one of those extensions are picked, this parameter will be ignored. More info: https://github.com/quarkusio/quarkus/issues/14437 className | `String` |
project | `MavenProject` | `${project}`
projectArtifactId | `String` |
projectDescription | `String` |
projectGroupId | `String` |
projectName | `String` |
projectVersion | `String` |
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:create-extension

Creates the base of a Quarkus Extension https://quarkus.io/guides/writing-extensions in different layout depending on the options and environment.

Create in the quarkus-parent project directory (or the extensions parent dir)

It will: * generate the new Quarkus extension in the extensions parent as a module (parent, runtime and deployment), with unit test and devmode test on option. * On option, generate the new integration test in the integration tests parent as a module. * add the dependencies to the bom/application/pom.xml.

Creating a Quarkiverse extension

When using -DgroupId=io.quarkiverse.[featureId], the new extension will use the Quarkiverse layout.

Creating a standalone extension

- generate the new Quarkus extension in the current directory (parent, runtime and deployment), with unit test and devmode test on option.

- On option, generate the new integration test module in the current directory.

Parameter | Type | Default value
--- | --- | ---
artifactId Used to detect legacy command usage and display an error | `String` |
basedir Directory where the changes should be performed. Default: the current directory of the current Java process. | `File` |
extensionDescription The extensionDescription of the runtime module. This description is used on https://code.quarkus.io/. | `String` |
extensionId extensionId of this extension (REQUIRED). It will be used to generate the different extension modules artifactIds ([namespaceId][extensionId]-parent), runtime ([namespaceId][extensionId]) and deployment ([namespaceId][extensionId]-deployment). | `String` |
extensionName The extensionName of the runtime module. The extensionNames of the extension parent and deployment modules will be based on this name too. Default: the formatted extensionId | `String` |
groupId The groupId for the newly created Maven modules (REQUIRED - INHERITED IN QUARKUS-CORE). | `String` |
javaVersion Version of Java used to build the project. | `String` |
namespaceId A prefix common to all extension artifactIds in the current source tree. Default: "quarkus-" in quarkus Quarkus Core and Quarkiverse else "" | `String` |
namespaceName A prefix common to all extension names in the current source tree. Default: "quarkus-" in Quarkus Core and Quarkiverse else "" | `String` |
packageName Base package under which classes should be created in Runtime and Deployment modules. Default: auto-generated out of groupId, namespaceId and extensionId | `String` |
project | `MavenProject` | `${project}`
quarkusBomArtifactId The artifactId of the Quarkus platform BOM. Default: io.quarkus.devtools.commands.CreateExtension.DEFAULT_BOM_ARTIFACT_ID | `String` |
quarkusBomGroupId The groupId of the Quarkus platform BOM. Default: io.quarkus.devtools.commands.CreateExtension.DEFAULT_BOM_GROUP_ID | `String` |
quarkusBomVersion The version of the Quarkus platform BOM. Default: io.quarkus.devtools.commands.CreateExtension.DEFAULT_BOM_VERSION | `String` |
quarkusVersion Quarkus version the newly created extension should depend on (REQUIRED - INHERITED IN QUARKUS-CORE). | `String` |
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
version The version for the newly created Maven modules. Default: automatic in Quarkus Core else io.quarkus.devtools.commands.CreateExtension.DEFAULT_VERSION | `String` |
withCodestart Indicates whether to generate an extension codestart | `boolean` |
withoutDevModeTest Indicates whether to generate a devmode test for the extension | `boolean` |
withoutIntegrationTests Indicates whether to generate an integration tests for the extension | `boolean` |
withoutTests Indicates whether to generate any tests for the extension (same as -DwithoutUnitTest -DwithoutIntegrationTest -DwithoutDevModeTest) | `boolean` |
withoutUnitTest Indicates whether to generate a unit test class for the extension | `boolean` |

### quarkus:create-jbang

Parameter | Type | Default value
--- | --- | ---
platformArtifactId Artifact ID of the target platform BOM | `String` |
platformGroupId Group ID of the target platform BOM | `String` |
platformVersion Version of the target platform BOM | `String` |
extensions | `Set` |
javaVersion | `String` |
noJBangWrapper | `boolean` | `false`
outputDirectory | `File` | `${basedir}/jbang-with-quarkus`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`

### quarkus:dependency-sbom

Quarkus application SBOM generator

Parameter | Type | Default value
--- | --- | ---
quarkus.dependency.sbom.format CycloneDX BOM format. Allowed values are json and xml. The default is json. | `String` | `json`
quarkus.dependency.sbom.include-license-text Whether to include license text in the generated SBOM. The default is false | `boolean` | `false`
quarkus.dependency.sbom.mode Target launch mode corresponding to io.quarkus.runtime.LaunchMode for which the SBOM should be built. io.quarkus.runtime.LaunchMode.NORMAL is the default. | `String` | `prod`
quarkus.dependency.sbom.output-file File to store the SBOM in. If not configured, the SBOM will be stored in the ${project.build.directory} directory. | `File` |
project | `MavenProject` (required) | `${project}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
quarkus.dependency.sbom.runtime-only Whether to limit application dependencies to only those that are included in the runtime | `boolean` |
quarkus.dependency.sbom.schema-version CycloneDX BOM schema version | `String` |
session | `MavenSession` | `${session}`
quarkus.dependency.sbom.skip Whether to skip the execution of the goal | `boolean` | `false`

### quarkus:dependency-tree

Displays Quarkus application build dependency tree including the deployment ones.

Parameter | Type | Default value
--- | --- | ---
appendOutput Whether to append outputs into the output file or overwrite it. | `boolean` | `false`
graph INCUBATING option, enabled with -Dquarkus.bootstrap.incubating-model-resolver system or project property. Whether to log all dependencies of each dependency node in a tree, adding [+] suffix to those whose dependencies are not expanded. | `boolean` |
mode Target launch mode corresponding to io.quarkus.runtime.LaunchMode for which the dependency tree should be built. io.quarkus.runtime.LaunchMode.NORMAL is the default. | `String` | `prod`
outputFile If specified, this parameter will cause the dependency tree to be written to the path specified, instead of writing to the console. | `File` |
project | `MavenProject` (required) | `${project}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
runtimeOnly Whether to log only the runtime dependencies of the Quarkus application | `boolean` |
session | `MavenSession` | `${session}`
verbose INCUBATING option, enabled with -Dquarkus.bootstrap.incubating-model-resolver system or project property. Whether to log dependency properties, such as on which classpath they belong, whether they are hot-reloadable in dev mode, etc. | `boolean` |

### quarkus:deploy

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
attachRunnerAsMainArtifact Whether to replace the original JAR with the Uber runner JAR as the main project artifact | `boolean` |
attachSboms Whether to attach SBOMs generated for Uber JARs as project artifacts | `boolean` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
buildDirectory | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
quarkus.deployment.dry-run | `boolean` |
finalName | `String` | `${project.build.finalName}`
generatedSourcesDirectory The directory for generated source files. | `File` | `${project.build.directory}/generated-sources`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
quarkus.container-image.build | `boolean` | `false`
quarkus.container-image.builder | `String` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
pluginRepos The project’s remote repositories to use for the resolution of plugins and their dependencies. | `List` (required) | `${project.remotePluginRepositories}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
quarkus.build.skip Skips the execution of this mojo | `boolean` | `false`
skipOriginalJarRename When the building an Uber JAR, the default JAR is renamed by adding .original suffix. Enabling this property will disable the renaming of the original JAR. | `boolean` |
systemProperties The list of system properties defined for the plugin. | `Map` |

### quarkus:dev

The dev mojo, that runs a quarkus app in a forked process. A background compilation process is launched and any changes are automatically reflected in your running application. You can use this dev mode in a remote container environment with remote-dev.

Parameter | Type | Default value
--- | --- | ---
argsString | `String` | `${quarkus.args}`
buildDir | `File` | `${project.build.directory}`
compilerArgs Additional parameters to pass to javac when recompiling changed source files. | `List` |
compilerOptions Additional compiler arguments | `List` |
copySurefireVariables When enabled, the <environmentVariables> and <systemPropertyVariables> elements of the Maven Surefire plugin are copied to environment variables and system properties defined by this plugin. Note that no other Surefire configuration is used (notably <systemProperties>), only the 2 elements mentioned above. This plugin’s <environmentVariables> and <systemProperties> have priority, so duplicate keys are not copied. Since environment variables and system properties are global to the entire process, this also affects dev mode (when executed as quarkus:dev). Because of that, this copying action is disabled by default and requires opt-in. | `boolean` | `false`
debug If this server should be started in debug mode. The default is to start in debug mode and listen on port 5005. Whether the JVM is suspended waiting for a debugger to be attached, depends on the value of suspend. debug supports the following options: Value Effect false The JVM is not started in debug mode true The JVM is started in debug mode and will be listening on debugHost:debugPort client The JVM is started in client mode, and will attempt to connect to debugHost:debugPort {port} The JVM is started in debug mode and will be listening on debugHost:{port}. By default, debugHost has the value "localhost", and debugPort is 5005. | `String` | `${debug}`
debugHost | `String` | `${debugHost}`
debugPort | `String` | `${debugPort}`
deleteDevJar | `boolean` | `TRUE`
enforceBuildGoal Whether to enforce the quarkus-maven-plugin build goal to be configured. By default, a missing build goal is considered an inconsistency (although the build goal is not required technically). In this case a warning will be logged and the application will not be started. | `boolean` | `${quarkus.enforceBuildGoal}`
environmentVariables | `Map` |
extensionJvmOptions Extension dev mode JVM option filter configuration. Allows disabling all JVM options configured by extensions, for example <extensionJvmOptions> <!-- disable JVM options from all the extensions -→ <disableAll>true</disableAll> </extensionJvmOptions>* or specifying a groupId:artifactId:classifier artifact pattern to disable options provided by the matching subset of extensions, for example <extensionJvmOptions> <disableFor> <!-- disable JVM options from all the extensions with groupId org.acme -→ <extension>org.acme</extension> <!-- disable JVM options configured by io.quarkiverse:quarkus-magic -→ <extension>io.quarkiverse:quarkus-magic</extension> </disableFor> </extensionJvmOptions> | `ExtensionDevModeJvmOptionFilter` |
forceC2 This value is intended to be set to true when we want to require C2 compilation instead of preventing it from ever kicking in. Setting this will likely have a small negative effect on startup time and should only be done when it absolutely makes sense. | `Boolean` |
jvmArgs Allows configuring arbitrary JVM arguments. Multiple arguments can be specified by delimiting them with a space character. | `String` | `${jvm.args}`
modules Allows configuring the modules to add to the application. The listed modules will be added using: --add-modules m1,m2…​. | `List` | `${add-modules}`
mojoExecution | `MojoExecution` (required) | `${mojoExecution}`
noDeps Whether changes in the projects that appear to be dependencies of the project containing the application to be launched should trigger hot-reload. By default, they do. | `boolean` | `${noDeps}`
openJavaLang | `boolean` | `${open-lang-package}`
outputDirectory The directory for compiled classes. | `File` (required) | `${project.build.outputDirectory}`
pluginRepos | `List` (required) | `${project.remotePluginRepositories}`
project | `MavenProject` (required) | `${project}`
release The --release argument to javac. | `String` | `${maven.compiler.release}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
skipPlugins A comma-separated list of Maven plugin keys in groupId:artifactId format (for example org.codehaus.mojo:flatten-maven-plugin and/or goal prefixes, (for example flatten) that should be skipped when quarkus:dev identifies Maven plugin goals that should be executed before the application is launched in dev mode. Only the flatten Maven plugin is skipped by default. | `Set` | `org.codehaus.mojo:flatten-maven-plugin`
source The -source argument to javac. | `String` | `${maven.compiler.source}`
sourceDir | `File` | `${project.build.sourceDirectory}`
suspend Whether the JVM launch, in debug mode, should be suspended. This parameter is only relevant when the JVM is launched in debug mode. This parameter supports the following values (all the allowed values are case-insensitive): Value Effect y or true The debug mode JVM launch is suspended n or false The debug mode JVM is started without suspending | `String` | `${suspend}`
systemProperties | `Map` |
target The -target argument to javac. | `String` | `${maven.compiler.target}`
quarkus.warnIfBuildGoalMissing | `boolean` |
workingDir | `File` |

### quarkus:generate-code

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
finalName | `String` | `${project.build.finalName}`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
launchMode Application launch mode for which to generate the source code. | `String` | `NORMAL`
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
quarkus.generate-code.skip Skip the execution of this mojo | `boolean` | `false`

### quarkus:generate-code-tests

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
finalName | `String` | `${project.build.finalName}`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
launchMode Application launch mode for which to generate the source code. | `String` | `NORMAL`
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
quarkus.generate-code.serialize-test-model A switch that enables or disables serialization of an io.quarkus.bootstrap.model.ApplicationModel to a file for tests. Deserializing an application model when bootstrapping Quarkus tests has a performance advantage in that the tests will not have to initialize a Maven resolver and re-resolve the application model, which may save, depending on a project, ~80-95% of time on io.quarkus.bootstrap.model.ApplicationModel resolution. Serialization of the test model is enabled by default. | `boolean` | `true`
session | `MavenSession` | `${session}`
quarkus.generate-code.skip Skip the execution of this mojo | `boolean` | `false`

### quarkus:go-offline

This goal downloads all the Maven artifact dependencies required to build, run, test and launch the application dev mode.

Parameter | Type | Default value
--- | --- | ---
mode Target launch mode corresponding to io.quarkus.runtime.LaunchMode for which the dependencies should be resolved. io.quarkus.runtime.LaunchMode.TEST is the default, since it includes both provided and test dependency scopes. | `String` | `test`
project | `MavenProject` (required) | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:help

Display help information on quarkus-maven-plugin. Call mvn quarkus:help -Ddetail=true -Dgoal=<goal-name> to display parameter details.

Parameter | Type | Default value
--- | --- | ---
detail If true, display all settable properties for each goal. | `boolean` | `false`
goal The name of the goal for which to show help. If unspecified, all goals will be displayed. | `String` |
indentSize The number of spaces per indentation level, should be positive. | `int` | `2`
lineLength The maximum length of a display line, should be positive. | `int` | `80`

### quarkus:image-build

Builds a container image.

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
attachRunnerAsMainArtifact Whether to replace the original JAR with the Uber runner JAR as the main project artifact | `boolean` |
attachSboms Whether to attach SBOMs generated for Uber JARs as project artifacts | `boolean` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
buildDirectory | `File` | `${project.build.directory}`
quarkus.container-image.builder | `String` |
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
quarkus.container-image.dry-run | `boolean` |
finalName | `String` | `${project.build.finalName}`
generatedSourcesDirectory The directory for generated source files. | `File` | `${project.build.directory}/generated-sources`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
pluginRepos The project’s remote repositories to use for the resolution of plugins and their dependencies. | `List` (required) | `${project.remotePluginRepositories}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
quarkus.build.skip Skips the execution of this mojo | `boolean` | `false`
skipOriginalJarRename When the building an Uber JAR, the default JAR is renamed by adding .original suffix. Enabling this property will disable the renaming of the original JAR. | `boolean` |
systemProperties The list of system properties defined for the plugin. | `Map` |

### quarkus:image-push

Pushes a container image.

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
attachRunnerAsMainArtifact Whether to replace the original JAR with the Uber runner JAR as the main project artifact | `boolean` |
attachSboms Whether to attach SBOMs generated for Uber JARs as project artifacts | `boolean` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
buildDirectory | `File` | `${project.build.directory}`
quarkus.container-image.builder | `String` |
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
quarkus.container-image.dry-run | `boolean` |
finalName | `String` | `${project.build.finalName}`
generatedSourcesDirectory The directory for generated source files. | `File` | `${project.build.directory}/generated-sources`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
pluginRepos The project’s remote repositories to use for the resolution of plugins and their dependencies. | `List` (required) | `${project.remotePluginRepositories}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
quarkus.build.skip Skips the execution of this mojo | `boolean` | `false`
skipOriginalJarRename When the building an Uber JAR, the default JAR is renamed by adding .original suffix. Enabling this property will disable the renaming of the original JAR. | `boolean` |
systemProperties The list of system properties defined for the plugin. | `Map` |

### quarkus:info

Log Quarkus-specific project information, such as imported Quarkus platform BOMs, Quarkus extensions found among the project dependencies, etc.

Parameter | Type | Default value
--- | --- | ---
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
perModule If true, the information will be logged per each relevant module of the project instead of an overall summary | `boolean` |
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:list-categories

List extension categories, which a user can use to filter extensions.

Parameter | Type | Default value
--- | --- | ---
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
format Select the output format among 'name' (display the name only) and 'full' (includes a verbose name and a description). | `String` | `concise`
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:list-extensions

List the available extensions. You can add one or several extensions in one go, with the 2 following mojos: add-extensions and add-extension. You can list all extension or just installable. Choose between 3 output formats: name, concise and full.

Parameter | Type | Default value
--- | --- | ---
all List all extensions or just the installable. | `boolean` | `true`
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
category Only list extensions from given category. | `String` |
format Select the output format among 'id' (display the artifactId only), 'concise' (display name and artifactId) and 'full' (concise format and version related columns). | `String` | `concise`
installed List the already installed extensions | `boolean` | `false`
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
searchPattern Search filter on extension list. The format is based on Java Pattern. | `String` |
session | `MavenSession` | `${session}`

### quarkus:list-platforms

List imported and optionally other platforms available for the project.

Parameter | Type | Default value
--- | --- | ---
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
installed List the already installed extensions | `boolean` | `false`
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:native-image-agent

Post-processes native image agent generated configuration to trim any unnecessary configuration.

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
finalName | `String` | `${project.build.finalName}`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:prepare

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
finalName | `String` | `${project.build.finalName}`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
launchMode Application launch mode for which to generate the source code. | `String` | `NORMAL`
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
quarkus.generate-code.skip Skip the execution of this mojo | `boolean` | `false`

### quarkus:prepare-tests

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
finalName | `String` | `${project.build.finalName}`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
launchMode Application launch mode for which to generate the source code. | `String` | `NORMAL`
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
quarkus.generate-code.serialize-test-model A switch that enables or disables serialization of an io.quarkus.bootstrap.model.ApplicationModel to a file for tests. Deserializing an application model when bootstrapping Quarkus tests has a performance advantage in that the tests will not have to initialize a Maven resolver and re-resolve the application model, which may save, depending on a project, ~80-95% of time on io.quarkus.bootstrap.model.ApplicationModel resolution. Serialization of the test model is enabled by default. | `boolean` | `true`
session | `MavenSession` | `${session}`
quarkus.generate-code.skip Skip the execution of this mojo | `boolean` | `false`

### quarkus:remote-dev

The dev mojo, that connects to a remote host.

Parameter | Type | Default value
--- | --- | ---
argsString | `String` | `${quarkus.args}`
buildDir | `File` | `${project.build.directory}`
compilerArgs Additional parameters to pass to javac when recompiling changed source files. | `List` |
compilerOptions Additional compiler arguments | `List` |
copySurefireVariables When enabled, the <environmentVariables> and <systemPropertyVariables> elements of the Maven Surefire plugin are copied to environment variables and system properties defined by this plugin. Note that no other Surefire configuration is used (notably <systemProperties>), only the 2 elements mentioned above. This plugin’s <environmentVariables> and <systemProperties> have priority, so duplicate keys are not copied. Since environment variables and system properties are global to the entire process, this also affects dev mode (when executed as quarkus:dev). Because of that, this copying action is disabled by default and requires opt-in. | `boolean` | `false`
debug If this server should be started in debug mode. The default is to start in debug mode and listen on port 5005. Whether the JVM is suspended waiting for a debugger to be attached, depends on the value of suspend. debug supports the following options: Value Effect false The JVM is not started in debug mode true The JVM is started in debug mode and will be listening on debugHost:debugPort client The JVM is started in client mode, and will attempt to connect to debugHost:debugPort {port} The JVM is started in debug mode and will be listening on debugHost:{port}. By default, debugHost has the value "localhost", and debugPort is 5005. | `String` | `${debug}`
debugHost | `String` | `${debugHost}`
debugPort | `String` | `${debugPort}`
deleteDevJar | `boolean` | `TRUE`
enforceBuildGoal Whether to enforce the quarkus-maven-plugin build goal to be configured. By default, a missing build goal is considered an inconsistency (although the build goal is not required technically). In this case a warning will be logged and the application will not be started. | `boolean` | `${quarkus.enforceBuildGoal}`
environmentVariables | `Map` |
extensionJvmOptions Extension dev mode JVM option filter configuration. Allows disabling all JVM options configured by extensions, for example <extensionJvmOptions> <!-- disable JVM options from all the extensions -→ <disableAll>true</disableAll> </extensionJvmOptions>* or specifying a groupId:artifactId:classifier artifact pattern to disable options provided by the matching subset of extensions, for example <extensionJvmOptions> <disableFor> <!-- disable JVM options from all the extensions with groupId org.acme -→ <extension>org.acme</extension> <!-- disable JVM options configured by io.quarkiverse:quarkus-magic -→ <extension>io.quarkiverse:quarkus-magic</extension> </disableFor> </extensionJvmOptions> | `ExtensionDevModeJvmOptionFilter` |
forceC2 This value is intended to be set to true when we want to require C2 compilation instead of preventing it from ever kicking in. Setting this will likely have a small negative effect on startup time and should only be done when it absolutely makes sense. | `Boolean` |
jvmArgs Allows configuring arbitrary JVM arguments. Multiple arguments can be specified by delimiting them with a space character. | `String` | `${jvm.args}`
modules Allows configuring the modules to add to the application. The listed modules will be added using: --add-modules m1,m2…​. | `List` | `${add-modules}`
mojoExecution | `MojoExecution` (required) | `${mojoExecution}`
noDeps Whether changes in the projects that appear to be dependencies of the project containing the application to be launched should trigger hot-reload. By default, they do. | `boolean` | `${noDeps}`
openJavaLang | `boolean` | `${open-lang-package}`
outputDirectory The directory for compiled classes. | `File` (required) | `${project.build.outputDirectory}`
pluginRepos | `List` (required) | `${project.remotePluginRepositories}`
project | `MavenProject` (required) | `${project}`
release The --release argument to javac. | `String` | `${maven.compiler.release}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
skipPlugins A comma-separated list of Maven plugin keys in groupId:artifactId format (for example org.codehaus.mojo:flatten-maven-plugin and/or goal prefixes, (for example flatten) that should be skipped when quarkus:dev identifies Maven plugin goals that should be executed before the application is launched in dev mode. Only the flatten Maven plugin is skipped by default. | `Set` | `org.codehaus.mojo:flatten-maven-plugin`
source The -source argument to javac. | `String` | `${maven.compiler.source}`
sourceDir | `File` | `${project.build.sourceDirectory}`
suspend Whether the JVM launch, in debug mode, should be suspended. This parameter is only relevant when the JVM is launched in debug mode. This parameter supports the following values (all the allowed values are case-insensitive): Value Effect y or true The debug mode JVM launch is suspended n or false The debug mode JVM is started without suspending | `String` | `${suspend}`
systemProperties | `Map` |
target The -target argument to javac. | `String` | `${maven.compiler.target}`
quarkus.warnIfBuildGoalMissing | `boolean` |
workingDir | `File` |

### quarkus:remove-extension

Allow removing an extension from an existing pom.xml file. Because you can remove one or several extension in one go, there are 2 mojos: remove-extensions and remove-extension. Both supports the extension and extensions parameters.

Parameter | Type | Default value
--- | --- | ---
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
extension For usability reason, this parameter allows removing a single extension. | `String` |
extensions The list of extensions to be removed. | `Set` |
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:remove-extensions

Allow removing extensions to an existing pom.xml file. Because you can remove one or several extension in one go, there are 2 mojos: remove-extensions and remove-extension. Both supports the extension and extensions parameters.

Parameter | Type | Default value
--- | --- | ---
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
extension For usability reason, this parameter allows removing a single extension. | `String` |
extensions The list of extensions to be removed. | `Set` |
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`

### quarkus:run

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
finalName | `String` | `${project.build.finalName}`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
systemProperties The list of system properties defined for the plugin. | `Map` |

### quarkus:test

The test mojo, that starts continuous testing outside of dev mode

Parameter | Type | Default value
--- | --- | ---
argsString | `String` | `${quarkus.args}`
buildDir | `File` | `${project.build.directory}`
compilerArgs Additional parameters to pass to javac when recompiling changed source files. | `List` |
compilerOptions Additional compiler arguments | `List` |
copySurefireVariables When enabled, the <environmentVariables> and <systemPropertyVariables> elements of the Maven Surefire plugin are copied to environment variables and system properties defined by this plugin. Note that no other Surefire configuration is used (notably <systemProperties>), only the 2 elements mentioned above. This plugin’s <environmentVariables> and <systemProperties> have priority, so duplicate keys are not copied. Since environment variables and system properties are global to the entire process, this also affects dev mode (when executed as quarkus:dev). Because of that, this copying action is disabled by default and requires opt-in. | `boolean` | `false`
debug If this server should be started in debug mode. The default is to start in debug mode and listen on port 5005. Whether the JVM is suspended waiting for a debugger to be attached, depends on the value of suspend. debug supports the following options: Value Effect false The JVM is not started in debug mode true The JVM is started in debug mode and will be listening on debugHost:debugPort client The JVM is started in client mode, and will attempt to connect to debugHost:debugPort {port} The JVM is started in debug mode and will be listening on debugHost:{port}. By default, debugHost has the value "localhost", and debugPort is 5005. | `String` | `${debug}`
debugHost | `String` | `${debugHost}`
debugPort | `String` | `${debugPort}`
deleteDevJar | `boolean` | `TRUE`
enforceBuildGoal Whether to enforce the quarkus-maven-plugin build goal to be configured. By default, a missing build goal is considered an inconsistency (although the build goal is not required technically). In this case a warning will be logged and the application will not be started. | `boolean` | `${quarkus.enforceBuildGoal}`
environmentVariables | `Map` |
extensionJvmOptions Extension dev mode JVM option filter configuration. Allows disabling all JVM options configured by extensions, for example <extensionJvmOptions> <!-- disable JVM options from all the extensions -→ <disableAll>true</disableAll> </extensionJvmOptions>* or specifying a groupId:artifactId:classifier artifact pattern to disable options provided by the matching subset of extensions, for example <extensionJvmOptions> <disableFor> <!-- disable JVM options from all the extensions with groupId org.acme -→ <extension>org.acme</extension> <!-- disable JVM options configured by io.quarkiverse:quarkus-magic -→ <extension>io.quarkiverse:quarkus-magic</extension> </disableFor> </extensionJvmOptions> | `ExtensionDevModeJvmOptionFilter` |
forceC2 This value is intended to be set to true when we want to require C2 compilation instead of preventing it from ever kicking in. Setting this will likely have a small negative effect on startup time and should only be done when it absolutely makes sense. | `Boolean` |
jvmArgs Allows configuring arbitrary JVM arguments. Multiple arguments can be specified by delimiting them with a space character. | `String` | `${jvm.args}`
modules Allows configuring the modules to add to the application. The listed modules will be added using: --add-modules m1,m2…​. | `List` | `${add-modules}`
mojoExecution | `MojoExecution` (required) | `${mojoExecution}`
noDeps Whether changes in the projects that appear to be dependencies of the project containing the application to be launched should trigger hot-reload. By default, they do. | `boolean` | `${noDeps}`
openJavaLang | `boolean` | `${open-lang-package}`
outputDirectory The directory for compiled classes. | `File` (required) | `${project.build.outputDirectory}`
pluginRepos | `List` (required) | `${project.remotePluginRepositories}`
project | `MavenProject` (required) | `${project}`
release The --release argument to javac. | `String` | `${maven.compiler.release}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
skipPlugins A comma-separated list of Maven plugin keys in groupId:artifactId format (for example org.codehaus.mojo:flatten-maven-plugin and/or goal prefixes, (for example flatten) that should be skipped when quarkus:dev identifies Maven plugin goals that should be executed before the application is launched in dev mode. Only the flatten Maven plugin is skipped by default. | `Set` | `org.codehaus.mojo:flatten-maven-plugin`
source The -source argument to javac. | `String` | `${maven.compiler.source}`
sourceDir | `File` | `${project.build.sourceDirectory}`
suspend Whether the JVM launch, in debug mode, should be suspended. This parameter is only relevant when the JVM is launched in debug mode. This parameter supports the following values (all the allowed values are case-insensitive): Value Effect y or true The debug mode JVM launch is suspended n or false The debug mode JVM is started without suspending | `String` | `${suspend}`
systemProperties | `Map` |
target The -target argument to javac. | `String` | `${maven.compiler.target}`
quarkus.warnIfBuildGoalMissing | `boolean` |
workingDir | `File` |

### quarkus:track-config-changes

Maven goal that is executed before the BuildMojo. The goal looks for a file that contains build time configuration options read during the previous build. If that file exists, the goal will check whether the configuration options used during the previous build have changed in the current configuration and will persist their current values to another file, so that both configuration files could be compared by tools caching build goal outcomes to check whether the previous outcome of the BuildMojo needs to be rebuilt.

Parameter | Type | Default value
--- | --- | ---
appArtifact Coordinates of the Maven artifact containing the original Java application to build the native image for. If not provided, the current project is assumed to be the original Java application. The coordinates are expected to be expressed in the following format: groupId:artifactId:classifier:type:version With the classifier, type and version being optional. If the type is missing, the artifact is assumed to be of type JAR. If the version is missing, the artifact is going to be looked up among the project dependencies using the provided coordinates. However, if the expression consists of only three parts, it is assumed to be groupId:artifactId:version. If the expression consists of only four parts, it is assumed to be groupId:artifactId:classifier:type. | `String` |
bootstrapId Application bootstrap provider ID. This parameter is not supposed to be configured by the user. To be able to re-use an application bootstrapped in one phase in a later phase, there needs to be a way to identify the correct instance of the bootstrapped application (in case there are more than one) in each Mojo. A bootstrap ID serves this purpose. This parameter is set in DevMojo invoking generate-code and generate-code-tests goals. If this parameter is not configured, a Mojo execution ID will be used as the bootstrap ID. | `String` |
buildDir | `File` | `${project.build.directory}`
quarkusCloseBootstrappedApp Whether to close the bootstrapped applications after the execution | `Boolean` |
quarkus.track-config-changes.dependencies-file Dependency dump file | `File` |
quarkus.track-config-changes.dump-current-when-recorded-unavailable Whether to dump the current build configuration in case the configuration from the previous build isn’t found | `boolean` | `false`
quarkus.track-config-changes.dump-dependencies Whether to dump Quarkus application dependencies along with their checksums | `boolean` | `true`
finalName | `String` | `${project.build.finalName}`
ignoredEntries When building an uber-jar, this array specifies entries that should be excluded from the final jar. The entries are relative to the root of the file. An example of this configuration could be: <configuration> <uberJar>true</uberJar> <ignoredEntries> <ignoredEntry>META-INF/BC2048KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC2048KE.DSA</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.SF</ignoredEntry> <ignoredEntry>META-INF/BC1024KE.DSA</ignoredEntry> </ignoredEntries> </configuration> | `String[]` |
manifestEntries The list of main manifest attributes | `Map` |
manifestSections The list of manifest sections | `List` |
launchMode | `String` |
mojoExecution The context of the execution of the plugin. | `MojoExecution` (required) | `${mojoExecution}`
quarkus.track-config-changes.outputDirectory | `File` | `${project.build.directory}`
quarkus.track-config-changes.outputFile | `File` |
project | `MavenProject` (required) | `${project}`
properties The properties of the plugin. | `Map` |
quarkus.recorded-build-config.directory | `File` | `${basedir}/.quarkus`
quarkus.recorded-build-config.file | `String` |
repoSession The current repository/network configuration of Maven. | `RepositorySystemSession` | `${repositorySystemSession}`
repos The project’s remote repositories to use for the resolution of artifacts and their dependencies. | `List` (required) | `${project.remoteProjectRepositories}`
session | `MavenSession` | `${session}`
quarkus.track-config-changes.skip Skip the execution of this mojo | `boolean` | `false`

### quarkus:update

Suggest project updates and create a recipe with the possibility to apply it.

Parameter | Type | Default value
--- | --- | ---
bomArtifactId | `String` |
bomGroupId | `String` |
bomVersion | `String` |
mavenSession | `MavenSession` | `${session}`
noRewrite Disable the rewrite feature. Deprecated: use -Drewrite=false instead | `Boolean` | `false`
perModule Deprecated: this option was unused | `boolean` |
platformVersion Version of the target platform (e.g: 2.0.0.Final) You may instead use stream to target the latest version of a specific platform stream. | `String` |
project | `MavenProject` | `${project}`
repoSession | `RepositorySystemSession` | `${repositorySystemSession}`
repos | `List` (required) | `${project.remoteProjectRepositories}`
rewrite Run the suggested update recipe for this project. | `Boolean` |
additionalUpdateRecipes Specify a list of additional artifacts (GAV) containing rewrite recipes | `String` |
rewriteDryRun Do a dry run the suggested update recipe for this project. | `Boolean` | `false`
rewritePluginVersion The OpenRewrite plugin version | `String` |
quarkusUpdateRecipes Use custom io.quarkus:quarkus-update-recipes:LATEST coords (GAV) or just provide the version. This artifact should contain the base Quarkus update recipes to update a project. | `String` |
session | `MavenSession` | `${session}`
stream Target stream (e.g: 2.0) | `String` |