Wildfly Build Process

Version 2

    This document will cover the current state of the Wildfly build as the work to split it into multiple repos continues. It will be updated as the build evolves.

     

    The source for the Wildfly build and provisioning tools can be found at: wildfly/wildfly-build-tools · GitHub

     

    Feature Packs

     

    The wildfly build process consists of first generating a Wildfly 'feature pack', which is a lightweight artifact that contains a complete description of a set of server features. These feature packs can be provisioned into full servers, or used as dependencies for other feature packs. In general the build process will first create a feature pack using the wildfly-feature-pack-build-maven-plugin, and then use the wildfly-server-provisioning-maven-plugin to provision 'this' and 'fat' servers into the *build and *dist directories respectively.

     

    Feature packs are assembled from a feature-pack-build.xml file, the schema of which can be found at https://github.com/wildfly/wildfly-build-tools/blob/master/feature-pack-build-maven-plugin/src/main/resources/

     

    In order to build a feature pack it is nessesary to create three directories in the src/main/resources folder:

     

    modules: contains module.xml files. These files should not use <resource> references, but should instead use references of the form: <artifact name="${org.hibernate:hibernate-core}"/>. These artifact references will be replaces by concrete references to a specific version or a <resource> reference when the server is provisioned. Because the version is not hard coded into the module.xml files this makes it possible to override the version of specific artifacts at provisioning time.

    content: contains files that are copied into the server.

    configuration: contains configuration templates that are used to generate server configuration files.

     

    The exact process that is used to do the build and the finer details will likely change before 9.0.0.Final, so they are not documented here, however the schema files and the examples already present in the Wildfly feature pack builds should be serve as examples.

     

    Build Process

     

    Currently the server is split into two repositories, the core and full repositories. The core repository is responsible for creating a feature pack that just contains the core server functionality. The full repository creates both the web and full feature packs (with full depending on web). In the near future the web feature pack will be split off into its own repository.

     

    The wildfly-server-provisioning-maven-plugin is used to provision the servers. Each feature pack is provisioned into a 'thin' version of the server in the relevant *build directory, and a traditional 'fat' version of the server in the *dist directory. The Wildfly Core testsuite also uses the provisioning tools to directly provision the server to test, while for now the full testsuite just copies over the provisioned server.