## wildfly:image

Full name:

org.wildfly.plugins:wildfly-maven-plugin:4.2.1.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).

Attributes:

- Requires a Maven project to be executed.
- Requires dependency resolution of artifacts in scope: compile+runtime.
- Since version: 4.0.
- Binds by default to the lifecycle phase: package.

### Optional Parameters

Name | Type | Since | Description
--- | --- | --- | ---
<channels> | List | 4.0 | User property is: wildfly.channels. Alias is: channels.
<excludedLayers> | List | 4.0 | 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 is: wildfly.provisioning.layers.excluded. Alias is: excluded-layers.
<extraServerContentDirs> | List | 4.0 | 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 is: extra-server-content-dirs.
<featurePacks> | List | 4.0 | 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 is: wildfly.provisioning.feature-packs. Alias is: feature-packs.
<filename> | String | 4.0 | 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 is: wildfly.deployment.filename.
<galleonOptions> | Map | 4.0 | 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 is: galleon-options.
<image> | ApplicationImageInfo | 4.0 | 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 is: image.
<layers> | List | 4.0 | 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 is: wildfly.provisioning.layers. Alias is: layers.
<layersConfigurationFileName> | String | 4.0 | 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 value is: standalone.xml. User property is: wildfly.provisioning.layers.configuration.file.name. Alias is: layers-configuration-file-name.
<logProvisioningTime> | boolean | 4.0 | Whether to log provisioning time at the end Default value is: false. User property is: wildfly.provisioning.log.time. Alias is: log-provisioning-time.
<name> | String | 4.0 | Specifies the name used for the deployment. When the deployment is copied to the server, it is renamed with this name. User property is: wildfly.deployment.name.
<offlineProvisioning> | boolean | 4.0 | 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 value is: false. User property is: wildfly.provisioning.offline. Alias is: offline-provisioning.
<overwriteProvisionedServer> | boolean | 4.0 | Set to true if you want to delete the existing server referenced from the provisioningDir and provision a new one, otherwise false. Default value is: false. User property is: wildfly.provisioning.overwrite-provisioned-server. Alias is: overwrite-provisioned-server.
<packagingScripts> | List | 4.0 | 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 is: packaging-scripts.
<provisioningDir> | String | 4.0 | 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 value is: server. User property is: wildfly.provisioning.dir. Alias is: provisioning-dir.
<provisioningFile> | File | 4.0 | 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 value is: ${project.basedir}/galleon/provisioning.xml. User property is: wildfly.provisioning.file. Alias is: provisioning-file.
<recordProvisioningState> | boolean | 4.0 | Whether to record provisioning state in .galleon directory. Default value is: false. User property is: wildfly.provisioning.record.state. Alias is: record-provisioning-state.
<runtimeName> | String | 4.0 | Deprecated. use the name property instead to change the name of the deployment. User property is: wildfly.deployment.runtime.name. Alias is: runtime-name.
<serverConfig> | String | 4.0 | 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. Default value is: standalone.xml. User property is: wildfly.serverConfig. Alias is: server-config.
<skip> | boolean | 4.0 | Set to true if you want the goal to be skipped, otherwise false. Default value is: false. User property is: wildfly.package.skip.
<skipDeployment> | boolean | 4.0 | Skip deploying the deployment after the server is provisioned (false by default). Default value is: false. User property is: wildfly.package.deployment.skip.
<stdout> | String | 4.0 | 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 value is: System.out. User property is: wildfly.stdout.

### Parameter Details

#### <channels>

- Type: java.util.List
- Since: 4.0
- Required: No
- User Property: wildfly.channels
- Alias: channels

#### <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
- Since: 4.0
- 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
- Since: 4.0
- 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
- Since: 4.0
- 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
- Since: 4.0
- 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
- Since: 4.0
- Required: No
- Alias: galleon-options

#### <image>

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
- Since: 4.0
- Required: No
- Alias: image

#### <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
- Since: 4.0
- 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
- Since: 4.0
- 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
- Since: 4.0
- 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
- Since: 4.0
- 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
- Since: 4.0
- 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
- Since: 4.0
- 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
- Since: 4.0
- Required: No
- Alias: packaging-scripts

#### <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
- Since: 4.0
- 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
- Since: 4.0
- Required: No
- User Property: wildfly.provisioning.file
- Default: ${project.basedir}/galleon/provisioning.xml
- Alias: provisioning-file

#### <recordProvisioningState>

Whether to record provisioning state in .galleon directory.

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

#### <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
- Since: 4.0
- 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.

- Type: java.lang.String
- Since: 4.0
- 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
- Since: 4.0
- Required: No
- User Property: wildfly.package.skip
- Default: false

#### <skipDeployment>

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

- Type: boolean
- Since: 4.0
- 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
- Since: 4.0
- Required: No
- User Property: wildfly.stdout
- Default: System.out