## wildfly:image

Full name:

org.wildfly.plugins:wildfly-maven-plugin:5.1.0.Final:image

Description:

Build (and push) an application image containing the provisioned server and the deployment.

The `image` goal extends the `package` goal, building and pushing the image occurs after the server is provisioned and the deployment deployed in it.

The `image` goal relies on a Docker binary to execute all image commands (build, login, push).

Note that if a WildFly Bootable JAR is packaged, it is ignored when building the image.

Attributes:

- Requires a Maven project to be executed.
- Requires dependency resolution of artifacts in scope: `compile+runtime`.
- The goal is not marked as thread-safe and thus does not support parallel builds.
- Since version: `4.0`.
- Binds by default to the lifecycle phase: `package`.

### Optional Parameters

Name | Type | Since | Description
--- | --- | --- | ---
`<bootableJar>` | `boolean` | `5.0` | Package the provisioned server into a WildFly Bootable JAR. In order to produce a hollow jar (a jar that doesn't contain a deployment) set the { @code skipDeployment } parameter. A server packaged as bootable JAR is suited to run on bare-metal. When provisioning a server for the cloud, this option shouldn't be set. Note that the produced fat JAR is ignored when running the `dev`,`image`,`start` or `run` goals. User Property: `wildfly.bootable.jar` Alias: `bootable-jar`
`<bootableJarInstallArtifactClassifier>` | `String` | `5.0` | When `bootable-jar` is set to true, the bootable JAR artifact is attached to the project with the classifier 'bootable'. Use this parameter to configure the classifier. Default: `bootable` User Property: `wildfly.bootable.jar.classifier` Alias: `bootable-jar-install-artifact-classifier`
`<bootableJarName>` | `String` | `5.0` | When `bootable-jar` is set to true, use this parameter to name the generated jar file. Note that since 5.1 the default name changed from `server-bootable.jar` to `${project.artifactId`-bootable.jar}. Default: `${project.artifactId}-bootable.jar` User Property: `wildfly.bootable.jar.name` Alias: `bootable-jar-name`
`<build>` | `boolean` | `5.0.1` | Whether the application image should be built (default is `true`). Default: `true` User Property: `wildfly.image.build`
`<channels>` | `List<ChannelConfiguration>` | `-` | A list of channels used for resolving artifacts while provisioning. Defining a channel:
    <channels>
      <channel>
          <manifest>
              <groupId>org.wildfly.channels</groupId>
              <artifactId>wildfly-30.0</artifactId>
          </manifest>
      </channel>
      <channel>
          <manifest>
              <url>https://example.example.org/channel/30</url>
          </manifest>
      </channel>
    </channels>
The `wildfly.channels` property can be used pass a comma delimited string for the channels. The channel can be a URL or a Maven GAV. If a Maven GAV is used, the groupId and artifactId are required. Examples:
        -Dwildfly.channels="https://channels.example.org/30"
        -Dwildfly.channels="https://channels.example.org/30,org.example.channel:updates-30"
        -Dwildfly.channels="https://channels.example.org/30,org.example.channel:updates-30:1.0.2"
User Property: `wildfly.channels` Alias: `channels`
`<discoverProvisioningInfo>` | `GlowConfig` | `5.0` | Galleon provisioning info discovery. By enabling this feature, the set of Galleon feature-packs and layers are automatically discovered by scanning the deployed application. You can configure the following items: addOns: List of addOn to enable. An addOn brings extra galleon layers to the provisioning (eg: `wildfly-cli` to include CLI. context: `bare-metal` or `cloud`. Default to `bare-metal`. Note that if the context is set to `cloud` and the plugin option `bootable-jar` is set, the plugin execution will abort. failsOnError: true|false. If errors are detected (missing datasource, missing messaging broker, ambiguous JNDI call, provisioning is aborted. Default to `false` layersForJndi: List of Galleon layers required by some JNDI calls located in your application. preview: `true` | `false`. Use preview feature-packs. Default to `false`. profile: `ha`. Default being non ha server configuration. suggest: `true` | `false`. Display addOns that you can use to enhance discovered provisioning configuration. Default to `false`. excludedArchives: List of archives contained in the deployment to exclude when scanning. Wildcards (`*`) are allowed. N.B. Just the name of the archive is matched, do not attempt to specify a full path within the jar. The following examples would be valid exclusions: `my-jar.jar`, `*-internal.rar`. verbose: `true` | `false`. Display more information. The set of rules that selected Galleon layers are printed. Default to `false`. version: server version. Default being the latest released version. ignoreDeployment: The deployment will be not analyzed. A server based on the configured add-ons and the default base layer is provisioned. Default to `false`. spaces: List of spaces to enable. A space brings extra galleon feature-packs to the provisioning (eg: `incubating` to include the feature-packs that are in the incubating state. For example, cloud, ha profile with CLI and openapi addOns enabled. mail layer being explicitly included:
      <discover-provisioning-info>
        <context>cloud</context>
        <profile>ha</profile>
        <addOns>
          <addOn>wildfly-cli</addOn>
          <addOn>openapi</addOn>
        </addOns>
        <layersForJndi>
          <layer>mail</layer>
        </layersForJndi>
      </discover-provisioning-info>
Alias: `discover-provisioning-info`
`<dockerBinary>` | `String` | `5.0.1` | The binary used to build and push images. If not explicitly set, there will be an attempt to determine the binary to use. The first attempt will be to check the `docker` command. If that command is not available, `podman` is attempted. If neither is available an error will occur if attempting to build or push an image. User Property: `wildfly.image.binary` Alias: `docker-binary`
`<dryRun>` | `boolean` | `5.0` | Do not actually provision a server but generate the Galleon provisioning configuration in `target/.wildfly-maven-plugin-provisioning.xml` file. Alias: `dry-run`
`<excludedDependencies>` | `Set<String>` | `5.1` | A list of the dependencies to exclude as deployments. The pattern is `groupId:artifactId:type:classifier:version`. Each type may be left blank. A pattern can be prefixed with a `!` to negatively match the pattern. Note that it is best practice to place negative checks first.
        <excluded-dependencies>
            <excluded>!org.wildfly.examples:*test*</excluded>
            <excluded>::jar</excluded>
        </excluded-dependencies>
User Property: `wildfly.excluded.dependencies` Alias: `excluded-dependencies`
`<excludedDependencyScope>` | `String` | `-` | Defines the scope of the dependencies to be excluded as deployments. This will deploy all dependencies not defined in the scope to the packaged server. However, this does assume the dependency passes the `<included-dependencies/>`, `<excluded-dependencies/>` and `<included-dependency-scope/>` checks. User Property: `wildfly.excluded.dependency.scope` Alias: `excluded-dependency-scope`
`<excludedLayers>` | `List<String>` | `-` | A list of Galleon layers to exclude. Can be used when feature-pack-location or feature-packs are set. Use the System property `wildfly.provisioning.layers.excluded` to provide a comma separated list of layers to exclude. User Property: `wildfly.provisioning.layers.excluded` Alias: `excluded-layers`
`<extraServerContentDirs>` | `List<String>` | `-` | A list of directories to copy content to the provisioned server. If a directory is not absolute, it has to be relative to the project base directory. Alias: `extra-server-content-dirs`
`<featurePacks>` | `List<GalleonFeaturePack>` | `-` | A list of feature-pack configurations to install, can be combined with layers. Use the System property `wildfly.provisioning.feature-packs` to provide a comma separated list of feature-packs. User Property: `wildfly.provisioning.feature-packs` Alias: `feature-packs`
`<filename>` | `String` | `-` | The file name of the application to be deployed. The `filename` property does have a default of `${project.build.finalName}.${project.packaging}`. The default value is not injected as it normally would be due to packaging types like `ejb` that result in a file with a `.jar` extension rather than an `.ejb` extension. User Property: `wildfly.deployment.filename`
`<galleonOptions>` | `Map<String,String>` | `-` | Arbitrary Galleon options used when provisioning the server. In case you are building a large amount of server in the same maven session, it is strongly advised to set 'jboss-fork-embedded' option to 'true' in order to fork Galleon provisioning and CLI scripts execution in dedicated processes. For example:
      <galleon-options>
        <jboss-fork-embedded>true</jboss-fork-embedded>
      </galleon-options>
Alias: `galleon-options`
`<group>` | `String` | `5.0.1` | The group part of the name of the application image. User Property: `wildfly.image.group`
`<image>` | `ApplicationImageInfo` | `-` | Deprecated. 5.0.1 use the matching configuration parameters instead of this complex object. The simple migration is to remove the surrounding `<image>` tags. The one exception is `<name>` needs to change to `<image-name>` NOTE: If this is used the other parameters for this goal will be ignored. The configuration of the application image. The `image` goal accepts the following configuration:
    <image>
      <!-- (optional) set it to false to skip build the application image (true by default) -->
      <build>true</build>

      <!-- (optional) set it to true to (login and) push the application image to the container registry (false by default).

        If user and password are not specified, the image goal will not attempt to login to the container
        registry prior to pushing the image.
        The login to the container registry must then be performed before Maven is run.
        -->
      <push>true</push>

      <!-- (optional) The binary used to perform image commands (build, login, push) (default is "docker") -->
      <docker-binary>docker</docker-binary>

      <!-- (optional) the JDK version used by the application. Allowed values are "11" and "17". If unspecified, the "latest" tag is used to determine the JDK version used by WildFly runtime image -->
      <jdk-version>11</jdk-version>

      <!-- (optional) The group part of the name of the application image -->
      <group>${user.name}</group>

      <!-- (optional) The name part of the application image. If not set, the value of the artifactId (in lower case) is used -->
      <name>${project.artifactId}</name>

      <!-- (optional) The tag part of the application image (default is "latest") -->
      <tag>latest</tag>

      <!-- (optional) The container registry. If set, the registry is added to the application name.
        If the image is pushed and the registry is not set, it defaults to "docker.io" to login to the registry
        -->
      <registry>quay.io</registry>

      <!-- (optional) The user name to login to the container registry (if push is enabled). -->
      <user>${user.name}</user>

      <!-- (optional) The password login to the container registry (if push is enabled) -->
      <password>${my.secret.password}</password>
    </image>
Alias: `image`
`<imageName>` | `String` | `5.0.1` | The name part of the application image. If not set, the value of the artifactId (in lower case) is used. User Property: `wildfly.image.name` Alias: `image-name`
`<includedDependencies>` | `Set<String>` | `5.1` | A list of the dependencies to include as deployments. These dependencies must be defined as dependencies in the project. The pattern is `groupId:artifactId:type:classifier:version`. Each type may be left blank. A pattern can be prefixed with a `!` to negatively match the pattern. Note that it is best practice to place negative checks first.
        <included-dependencies>
            <included>!org.wildfly.examples:*test*</included>
            <included>::war</included>
            <included>org.wildfly.examples</included>
        </included-dependencies>
User Property: `wildfly.included.dependencies` Alias: `included-dependencies`
`<includedDependencyScope>` | `String` | `-` | Defines the scope of the dependencies to be included as deployments. This will deploy all dependencies defined in the scope to the packaged server. However, this does assume the dependency passes the `<included-dependencies/>`, `<excluded-dependencies/>` and `<excluded-dependency-scope/>` checks. User Property: `wildfly.included.dependency.scope` Alias: `included-dependency-scope`
`<jdkVersion>` | `String` | `5.0.1` | Determine which WildFly runtime image to use so that the application runs with the specified JDK. Note this must be a valid JDK version. User Property: `wildfly.image.jdk.version` Alias: `jdk-version`
`<labels>` | `Map<String,String>` | `5.0.1` | Adds labels to the generated Dockerfile. Each label will be added as a new line with the prefix of `LABEL`. For example:
    <labels>
        <version>1.0</version>
        <description>This is only for testing purposes, \
    do not deploy</description>
    </labels>
Will generate:
    LABEL description="This is only for testing purposes, \
    do not deploy"
    LABEL version="1.0"
The map is always sorted by the key and the values are always wrapped in quotes and quotes within the value are escaped. User Property: `wildfly.image.labels`
`<layers>` | `List<String>` | `-` | A list of Galleon layers to provision. Can be used when feature-pack-location or feature-packs are set. Use the System property `wildfly.provisioning.layers` to provide a comma separated list of layers. User Property: `wildfly.provisioning.layers` Alias: `layers`
`<layersConfigurationFileName>` | `String` | `-` | The name of the configuration file generated from layers. Default value is `standalone.xml`. If no `layers` have been configured, setting this parameter is invalid. Default: `standalone.xml` User Property: `wildfly.provisioning.layers.configuration.file.name` Alias: `layers-configuration-file-name`
`<logProvisioningTime>` | `boolean` | `-` | Whether to log provisioning time at the end Default: `false` User Property: `wildfly.provisioning.log.time` Alias: `log-provisioning-time`
`<name>` | `String` | `-` | Specifies the name used for the deployment. When the deployment is copied to the server, it is renamed with this name. User Property: `wildfly.deployment.name`
`<offlineProvisioning>` | `boolean` | `-` | Whether to use offline mode when the plugin resolves an artifact. In offline mode the plugin will only use the local Maven repository for an artifact resolution. Default: `false` User Property: `wildfly.provisioning.offline` Alias: `offline-provisioning`
`<overwriteProvisionedServer>` | `boolean` | `-` | Set to `true` if you want to delete the existing server referenced from the `provisioningDir` and provision a new one, otherwise `false`. Default: `false` User Property: `wildfly.provisioning.overwrite-provisioned-server` Alias: `overwrite-provisioned-server`
`<packagingScripts>` | `List<CliSession>` | `-` | List of execution of CLI scripts and commands. An embedded server is started for each CLI execution. If a script file is not absolute, it has to be relative to the project base directory. CLI executions are configured in the following way:
      <packaging-scripts>
        <packaging-script>
          <scripts>
            <script>../scripts/script1.cli</script>
          </scripts>
          <commands>
            <command>/system-property=foo:add(value=bar)</command>
          </commands>
          <properties-files>
            <property-file>my-properties.properties</property-file>
          </properties-files>
          <java-opts>
            <java-opt>-Xmx256m</java-opt>
          </java-opts>
          <!-- Expressions resolved during server execution -->
          <resolve-expressions>false</resolve-expressions>
        </packaging-script>
      </packaging-scripts>
Alias: `packaging-scripts`
`<password>` | `String` | `5.0.1` | The user password to login to the container registry.
`<provisioningDir>` | `String` | `-` | The path to the directory where to provision the server. Can be an absolute path or a path relative to the buildDir. By default the server is provisioned into the `target/server` directory. Default: `server` User Property: `wildfly.provisioning.dir` Alias: `provisioning-dir`
`<provisioningFile>` | `File` | `-` | The path to the `provisioning.xml` file to use. Note that this cannot be used with the `feature-packs` or `configurations`. If the provisioning file is not absolute, it has to be relative to the project base directory. Default: `${project.basedir}/galleon/provisioning.xml` User Property: `wildfly.provisioning.file` Alias: `provisioning-file`
`<push>` | `boolean` | `5.0.1` | Whether the application image should be pushed. Default: `false` User Property: `wildfly.image.push`
`<recordProvisioningState>` | `boolean` | `-` | Whether to record provisioning state in .galleon directory. Default: `false` User Property: `wildfly.provisioning.record.state` Alias: `record-provisioning-state`
`<registry>` | `String` | `5.0.1` | The container registry. If set, the registry is added to the application name. If the image is pushed and the registry is not set, it defaults to the registry defined in your docker configuration. User Property: `wildfly.image.registry`
`<registryId>` | `String` | `5.0.1` | Specifies the id of the registry server for the username and password to be retrieved from the `settings.xml` file. User Property: `wildfly.image.registry.id` Alias: `registry-id`
`<runtimeName>` | `String` | `-` | Deprecated. use the `name` property instead to change the name of the deployment. The runtime name for the deployment. When the deployment is copied to the server, it is renamed with the `runtime-name`. If both `name` and `runtime-name` are specified, `runtime-name` is used. User Property: `wildfly.deployment.runtime.name` Alias: `runtime-name`
`<serverConfig>` | `String` | `-` | The name of the server configuration to use when deploying the deployment. Defaults to 'standalone.xml'. If `layers-configuration-file-name` has been set, this property is ignored and the deployment is deployed inside the configuration referenced from `layers-configuration-file-name`. The value of this parameter is also ignored if any layers are defined. Default: `standalone.xml` User Property: `wildfly.serverConfig` Alias: `server-config`
`<skip>` | `boolean` | `-` | Set to `true` if you want the goal to be skipped, otherwise `false`. Default: `false` User Property: `wildfly.package.skip`
`<skipDeployment>` | `boolean` | `-` | Skip deploying the deployments after the server is provisioned (`false` by default). Default: `false` User Property: `wildfly.package.deployment.skip`
`<stdout>` | `String` | `-` | Indicates how `stdout` and `stderr` should be handled for the spawned CLI processes. Note that `stderr` will be redirected to `stdout` if the value is defined unless the value is `none`. By default `stdout` and `stderr` are inherited from the current process. You can change the setting to one of the follow: `none` indicates the `stdout` and `stderr` stream should not be consumed `System.out` or `System.err` to redirect to the current processes (use this option if you see odd behavior from maven with the default value) Any other value is assumed to be the path to a file and the `stdout` and `stderr` will be written there Default: `System.out` User Property: `wildfly.stdout`
`<tag>` | `String` | `5.0.1` | The tag part of the application image (default is @{code latest}. Default: `latest` User Property: `wildfly.image.tag`
`<user>` | `String` | `5.0.1` | The username to login to the container registry. User Property: `wildfly.image.user`

### Parameter Details

#### <bootableJar>

Package the provisioned server into a WildFly Bootable JAR. In order to produce a hollow jar (a jar that doesn't contain a deployment) set the { @code skipDeployment } parameter. A server packaged as bootable JAR is suited to run on bare-metal. When provisioning a server for the cloud, this option shouldn't be set.

Note that the produced fat JAR is ignored when running the `dev`,`image`,`start` or `run` goals.

- Type: `boolean`
- Since: `5.0`
- Required: `No`
- User Property: `wildfly.bootable.jar`
- Alias: `bootable-jar`

#### <bootableJarInstallArtifactClassifier>

When `bootable-jar` is set to true, the bootable JAR artifact is attached to the project with the classifier 'bootable'. Use this parameter to configure the classifier.

- Type: `java.lang.String`
- Since: `5.0`
- Required: `No`
- User Property: `wildfly.bootable.jar.classifier`
- Default: `bootable`
- Alias: `bootable-jar-install-artifact-classifier`

#### <bootableJarName>

When `bootable-jar` is set to true, use this parameter to name the generated jar file.

Note that since 5.1 the default name changed from `server-bootable.jar` to `${project.artifactId`-bootable.jar}.

- Type: `java.lang.String`
- Since: `5.0`
- Required: `No`
- User Property: `wildfly.bootable.jar.name`
- Default: `${project.artifactId}-bootable.jar`
- Alias: `bootable-jar-name`

#### <build>

Whether the application image should be built (default is `true`).

- Type: `boolean`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.build`
- Default: `true`

#### <channels>

A list of channels used for resolving artifacts while provisioning.

Defining a channel:

    <channels>
      <channel>
          <manifest>
              <groupId>org.wildfly.channels</groupId>
              <artifactId>wildfly-30.0</artifactId>
          </manifest>
      </channel>
      <channel>
          <manifest>
              <url>https://example.example.org/channel/30</url>
          </manifest>
      </channel>
    </channels>

The `wildfly.channels` property can be used pass a comma delimited string for the channels. The channel can be a URL or a Maven GAV. If a Maven GAV is used, the groupId and artifactId are required.
Examples:

        -Dwildfly.channels="https://channels.example.org/30"
        -Dwildfly.channels="https://channels.example.org/30,org.example.channel:updates-30"
        -Dwildfly.channels="https://channels.example.org/30,org.example.channel:updates-30:1.0.2"

- Type: `java.util.List<org.wildfly.plugin.provision.ChannelConfiguration>`
- Required: `No`
- User Property: `wildfly.channels`
- Alias: `channels`

#### <discoverProvisioningInfo>

Galleon provisioning info discovery.

By enabling this feature, the set of Galleon feature-packs and layers are automatically discovered by scanning the deployed application. You can configure the following items:

- addOns: List of addOn to enable. An addOn brings extra galleon layers to the provisioning (eg: `wildfly-cli` to include CLI.
- context: `bare-metal` or `cloud`. Default to `bare-metal`. Note that if the context is set to `cloud` and the plugin option `bootable-jar` is set, the plugin execution will abort.
- failsOnError: true|false. If errors are detected (missing datasource, missing messaging broker, ambiguous JNDI call, provisioning is aborted. Default to `false`
- layersForJndi: List of Galleon layers required by some JNDI calls located in your application.
- preview: `true` | `false`. Use preview feature-packs. Default to `false`.
- profile: `ha`. Default being non ha server configuration.
- suggest: `true` | `false`. Display addOns that you can use to enhance discovered provisioning configuration. Default to `false`.
- excludedArchives: List of archives contained in the deployment to exclude when scanning. Wildcards (`*`) are allowed. N.B. Just the name of the archive is matched, do not attempt to specify a full path within the jar. The following examples would be valid exclusions: `my-jar.jar`, `*-internal.rar`.
- verbose: `true` | `false`. Display more information. The set of rules that selected Galleon layers are printed. Default to `false`.
- version: server version. Default being the latest released version.
- ignoreDeployment: The deployment will be not analyzed. A server based on the configured add-ons and the default base layer is provisioned. Default to `false`.
- spaces: List of spaces to enable. A space brings extra galleon feature-packs to the provisioning (eg: `incubating` to include the feature-packs that are in the incubating state.

For example, cloud, ha profile with CLI and openapi addOns enabled. mail layer being explicitly included:

      <discover-provisioning-info>
        <context>cloud</context>
        <profile>ha</profile>
        <addOns>
          <addOn>wildfly-cli</addOn>
          <addOn>openapi</addOn>
        </addOns>
        <layersForJndi>
          <layer>mail</layer>
        </layersForJndi>
      </discover-provisioning-info>

- Type: `org.wildfly.plugin.provision.GlowConfig`
- Since: `5.0`
- Required: `No`
- Alias: `discover-provisioning-info`

#### <dockerBinary>

The binary used to build and push images. If not explicitly set, there will be an attempt to determine the binary to use. The first attempt will be to check the `docker` command. If that command is not available, `podman` is attempted. If neither is available an error will occur if attempting to build or push an image.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.binary`
- Alias: `docker-binary`

#### <dryRun>

Do not actually provision a server but generate the Galleon provisioning configuration in `target/.wildfly-maven-plugin-provisioning.xml` file.

- Type: `boolean`
- Since: `5.0`
- Required: `No`
- Alias: `dry-run`

#### <excludedDependencies>

A list of the dependencies to exclude as deployments.

The pattern is `groupId:artifactId:type:classifier:version`. Each type may be left blank. A pattern can be prefixed with a `!` to negatively match the pattern. Note that it is best practice to place negative checks first.

        <excluded-dependencies>
            <excluded>!org.wildfly.examples:*test*</excluded>
            <excluded>::jar</excluded>
        </excluded-dependencies>

- Type: `java.util.Set<java.lang.String>`
- Since: `5.1`
- Required: `No`
- User Property: `wildfly.excluded.dependencies`
- Alias: `excluded-dependencies`

#### <excludedDependencyScope>

Defines the scope of the dependencies to be excluded as deployments. This will deploy all dependencies not defined in the scope to the packaged server. However, this does assume the dependency passes the `<included-dependencies/>`, `<excluded-dependencies/>` and `<included-dependency-scope/>` checks.

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.excluded.dependency.scope`
- Alias: `excluded-dependency-scope`

#### <excludedLayers>

A list of Galleon layers to exclude. Can be used when feature-pack-location or feature-packs are set. Use the System property `wildfly.provisioning.layers.excluded` to provide a comma separated list of layers to exclude.

- Type: `java.util.List<java.lang.String>`
- Required: `No`
- User Property: `wildfly.provisioning.layers.excluded`
- Alias: `excluded-layers`

#### <extraServerContentDirs>

A list of directories to copy content to the provisioned server. If a directory is not absolute, it has to be relative to the project base directory.

- Type: `java.util.List<java.lang.String>`
- Required: `No`
- Alias: `extra-server-content-dirs`

#### <featurePacks>

A list of feature-pack configurations to install, can be combined with layers. Use the System property `wildfly.provisioning.feature-packs` to provide a comma separated list of feature-packs.

- Type: `java.util.List<org.jboss.galleon.api.GalleonFeaturePack>`
- Required: `No`
- User Property: `wildfly.provisioning.feature-packs`
- Alias: `feature-packs`

#### <filename>

The file name of the application to be deployed.

The `filename` property does have a default of `${project.build.finalName}.${project.packaging}`. The default value is not injected as it normally would be due to packaging types like `ejb` that result in a file with a `.jar` extension rather than an `.ejb` extension.

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.deployment.filename`

#### <galleonOptions>

Arbitrary Galleon options used when provisioning the server. In case you are building a large amount of server in the same maven session, it is strongly advised to set 'jboss-fork-embedded' option to 'true' in order to fork Galleon provisioning and CLI scripts execution in dedicated processes. For example:

      <galleon-options>
        <jboss-fork-embedded>true</jboss-fork-embedded>
      </galleon-options>

- Type: `java.util.Map<java.lang.String, java.lang.String>`
- Required: `No`
- Alias: `galleon-options`

#### <group>

The group part of the name of the application image.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.group`

#### <image>

Deprecated.
5.0.1 use the matching configuration parameters instead of this complex object. The simple migration is to remove the surrounding `<image>` tags. The one exception is `<name>` needs to change to `<image-name>`

NOTE: If this is used the other parameters for this goal will be ignored.

The configuration of the application image.

The `image` goal accepts the following configuration:

    <image>
      <!-- (optional) set it to false to skip build the application image (true by default) -->
      <build>true</build>

      <!-- (optional) set it to true to (login and) push the application image to the container registry (false by default).

        If user and password are not specified, the image goal will not attempt to login to the container
        registry prior to pushing the image.
        The login to the container registry must then be performed before Maven is run.
        -->
      <push>true</push>

      <!-- (optional) The binary used to perform image commands (build, login, push) (default is "docker") -->
      <docker-binary>docker</docker-binary>

      <!-- (optional) the JDK version used by the application. Allowed values are "11" and "17". If unspecified, the "latest" tag is used to determine the JDK version used by WildFly runtime image -->
      <jdk-version>11</jdk-version>

      <!-- (optional) The group part of the name of the application image -->
      <group>${user.name}</group>

      <!-- (optional) The name part of the application image. If not set, the value of the artifactId (in lower case) is used -->
      <name>${project.artifactId}</name>

      <!-- (optional) The tag part of the application image (default is "latest") -->
      <tag>latest</tag>

      <!-- (optional) The container registry. If set, the registry is added to the application name.
        If the image is pushed and the registry is not set, it defaults to "docker.io" to login to the registry
        -->
      <registry>quay.io</registry>

      <!-- (optional) The user name to login to the container registry (if push is enabled). -->
      <user>${user.name}</user>

      <!-- (optional) The password login to the container registry (if push is enabled) -->
      <password>${my.secret.password}</password>
    </image>

- Type: `org.wildfly.plugin.provision.ApplicationImageInfo`
- Required: `No`
- Alias: `image`

#### <imageName>

The name part of the application image. If not set, the value of the artifactId (in lower case) is used.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.name`
- Alias: `image-name`

#### <includedDependencies>

A list of the dependencies to include as deployments. These dependencies must be defined as dependencies in the project.

The pattern is `groupId:artifactId:type:classifier:version`. Each type may be left blank. A pattern can be prefixed with a `!` to negatively match the pattern. Note that it is best practice to place negative checks first.

        <included-dependencies>
            <included>!org.wildfly.examples:*test*</included>
            <included>::war</included>
            <included>org.wildfly.examples</included>
        </included-dependencies>

- Type: `java.util.Set<java.lang.String>`
- Since: `5.1`
- Required: `No`
- User Property: `wildfly.included.dependencies`
- Alias: `included-dependencies`

#### <includedDependencyScope>

Defines the scope of the dependencies to be included as deployments. This will deploy all dependencies defined in the scope to the packaged server. However, this does assume the dependency passes the `<included-dependencies/>`, `<excluded-dependencies/>` and `<excluded-dependency-scope/>` checks.

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.included.dependency.scope`
- Alias: `included-dependency-scope`

#### <jdkVersion>

Determine which WildFly runtime image to use so that the application runs with the specified JDK. Note this must be a valid JDK version.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.jdk.version`
- Alias: `jdk-version`

#### <labels>

Adds labels to the generated Dockerfile. Each label will be added as a new line with the prefix of `LABEL`. For example:

    <labels>
        <version>1.0</version>
        <description>This is only for testing purposes, \
    do not deploy</description>
    </labels>

Will generate:

    LABEL description="This is only for testing purposes, \
    do not deploy"
    LABEL version="1.0"

The map is always sorted by the key and the values are always wrapped in quotes and quotes within the value are escaped.

- Type: `java.util.Map<java.lang.String, java.lang.String>`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.labels`

#### <layers>

A list of Galleon layers to provision. Can be used when feature-pack-location or feature-packs are set. Use the System property `wildfly.provisioning.layers` to provide a comma separated list of layers.

- Type: `java.util.List<java.lang.String>`
- Required: `No`
- User Property: `wildfly.provisioning.layers`
- Alias: `layers`

#### <layersConfigurationFileName>

The name of the configuration file generated from layers. Default value is `standalone.xml`. If no `layers` have been configured, setting this parameter is invalid.

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.provisioning.layers.configuration.file.name`
- Default: `standalone.xml`
- Alias: `layers-configuration-file-name`

#### <logProvisioningTime>

Whether to log provisioning time at the end

- Type: `boolean`
- Required: `No`
- User Property: `wildfly.provisioning.log.time`
- Default: `false`
- Alias: `log-provisioning-time`

#### <name>

Specifies the name used for the deployment.

When the deployment is copied to the server, it is renamed with this name.

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.deployment.name`

#### <offlineProvisioning>

Whether to use offline mode when the plugin resolves an artifact. In offline mode the plugin will only use the local Maven repository for an artifact resolution.

- Type: `boolean`
- Required: `No`
- User Property: `wildfly.provisioning.offline`
- Default: `false`
- Alias: `offline-provisioning`

#### <overwriteProvisionedServer>

Set to `true` if you want to delete the existing server referenced from the `provisioningDir` and provision a new one, otherwise `false`.

- Type: `boolean`
- Required: `No`
- User Property: `wildfly.provisioning.overwrite-provisioned-server`
- Default: `false`
- Alias: `overwrite-provisioned-server`

#### <packagingScripts>

List of execution of CLI scripts and commands. An embedded server is started for each CLI execution. If a script file is not absolute, it has to be relative to the project base directory. CLI executions are configured in the following way:

      <packaging-scripts>
        <packaging-script>
          <scripts>
            <script>../scripts/script1.cli</script>
          </scripts>
          <commands>
            <command>/system-property=foo:add(value=bar)</command>
          </commands>
          <properties-files>
            <property-file>my-properties.properties</property-file>
          </properties-files>
          <java-opts>
            <java-opt>-Xmx256m</java-opt>
          </java-opts>
          <!-- Expressions resolved during server execution -->
          <resolve-expressions>false</resolve-expressions>
        </packaging-script>
      </packaging-scripts>

- Type: `java.util.List<org.wildfly.plugin.cli.CliSession>`
- Required: `No`
- Alias: `packaging-scripts`

#### <password>

The user password to login to the container registry.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`

#### <provisioningDir>

The path to the directory where to provision the server. Can be an absolute path or a path relative to the buildDir. By default the server is provisioned into the `target/server` directory.

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.provisioning.dir`
- Default: `server`
- Alias: `provisioning-dir`

#### <provisioningFile>

The path to the `provisioning.xml` file to use. Note that this cannot be used with the `feature-packs` or `configurations`. If the provisioning file is not absolute, it has to be relative to the project base directory.

- Type: `java.io.File`
- Required: `No`
- User Property: `wildfly.provisioning.file`
- Default: `${project.basedir}/galleon/provisioning.xml`
- Alias: `provisioning-file`

#### <push>

Whether the application image should be pushed.

- Type: `boolean`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.push`
- Default: `false`

#### <recordProvisioningState>

Whether to record provisioning state in .galleon directory.

- Type: `boolean`
- Required: `No`
- User Property: `wildfly.provisioning.record.state`
- Default: `false`
- Alias: `record-provisioning-state`

#### <registry>

The container registry.

If set, the registry is added to the application name. If the image is pushed and the registry is not set, it defaults to the registry defined in your docker configuration.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.registry`

#### <registryId>

Specifies the id of the registry server for the username and password to be retrieved from the `settings.xml` file.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.registry.id`
- Alias: `registry-id`

#### <runtimeName>

Deprecated.
use the `name` property instead to change the name of the deployment.
The runtime name for the deployment.

When the deployment is copied to the server, it is renamed with the `runtime-name`. If both `name` and `runtime-name` are specified, `runtime-name` is used.

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.deployment.runtime.name`
- Alias: `runtime-name`

#### <serverConfig>

The name of the server configuration to use when deploying the deployment. Defaults to 'standalone.xml'. If `layers-configuration-file-name` has been set, this property is ignored and the deployment is deployed inside the configuration referenced from `layers-configuration-file-name`.

The value of this parameter is also ignored if any layers are defined.

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.serverConfig`
- Default: `standalone.xml`
- Alias: `server-config`

#### <skip>

Set to `true` if you want the goal to be skipped, otherwise `false`.

- Type: `boolean`
- Required: `No`
- User Property: `wildfly.package.skip`
- Default: `false`

#### <skipDeployment>

Skip deploying the deployments after the server is provisioned (`false` by default).

- Type: `boolean`
- Required: `No`
- User Property: `wildfly.package.deployment.skip`
- Default: `false`

#### <stdout>

Indicates how `stdout` and `stderr` should be handled for the spawned CLI processes. Note that `stderr` will be redirected to `stdout` if the value is defined unless the value is `none`.
By default `stdout` and `stderr` are inherited from the current process. You can change the setting to one of the follow:

- `none` indicates the `stdout` and `stderr` stream should not be consumed
- `System.out` or `System.err` to redirect to the current processes (use this option if you see odd behavior from maven with the default value)
- Any other value is assumed to be the path to a file and the `stdout` and `stderr` will be written there

- Type: `java.lang.String`
- Required: `No`
- User Property: `wildfly.stdout`
- Default: `System.out`

#### <tag>

The tag part of the application image (default is @{code latest}.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.tag`
- Default: `latest`

#### <user>

The username to login to the container registry.

- Type: `java.lang.String`
- Since: `5.0.1`
- Required: `No`
- User Property: `wildfly.image.user`