This project contains Maven Archetypes to generate Maven projects to develop Jakarta EE applications with WildFly
- wildfly-jakartaee-webapp-archetype generates a Maven project to develop a simple Web Archive (WAR) with WildFly
- wildfly-jakartaee-ear-archetype generates a Maven project to develop a Entreprise Archive (EAR) with WildFly. It generates an EJB and WAR modules to compose the EAR
- wildfly-subsystem-archetype generates a Maven project to develop a WildFly subsystem to extend the capabilities of WildFly.
The versions of all dependencies and plugins that are used by this archetype are configured in the parent's pom.xml.
To update the archetypes to new versions:
- update to latest "org.jboss:jboss-parent" version found at https://repo.maven.apache.org/maven2/org/jboss/jboss-parent/
- update the version property named "version.wildfly.bom"
- update the version property named "version.wildfly.core" to the version bundled with WildFly (found in "%WILDFLY_HOME%/modules/system/layers/base/org/jboss/as/controller/main").
- check whether dependencies have changed.
- check the plugin versions and update if necessary:
- wildfly-maven-plugin: https://repo.maven.apache.org/maven2/org/wildfly/plugins/wildfly-maven-plugin/
- maven-compiler-plugin: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/
- maven-surefire-plugin: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/
- maven-failsafe-plugin: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-failsafe-plugin/
- maven-war-plugin: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-war-plugin/
- maven-ear-plugin: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-ear-plugin/
- maven-ejb-plugin: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-ejb-plugin/
- update JUnit dependencies:
- JUnit 4 (subsystem archetype): https://repo.maven.apache.org/maven2/junit/junit/
- JUnit 5 (other archetypes): https://repo.maven.apache.org/maven2/org/junit/junit-bom/
The versions of all dependencies and plugins that are used by this archetype are configured in the parent's pom.xml.
For each archetype, their archetype-resources pom.xml is still in Git but in a separate source tree (e.g. wildfly-jakartaee-ear-archetype/src/main/resources-filtered/archetype-resources/pom.xml).
When the archetypes are built, their pom.xml are filtered with the property values from the parent pom (so their own version.wildfly.bom will have the actual value of the parent's version.wildfly.bom).
The reason of this structure is that we want to evaluate some property values when we built the archetype (for the versions) and keep others that will be evaluate when the project is generated by the archetypes (eg ${rootArtifactId}) . The latter properties are escaped from filtering by prepending a \.
Prior to releasing you should ensure you have your own GPG signing key set up, published to a key server and listed on wildfly.org.
Execute:
mvn release:prepare -Pjboss-release
Execute:
mvn release:perform -Pjboss-release
This will deploy the release to the wildfly-staging repository.
Wait for 10 minutes then visit the Validation task for the wildfly-staging repository in Nexus. If this task ran at least 10 minutes after the release was deployed check the latest results on the Settings tab and verify that at least one component was processed and that there were no errors. If the task has not run it can be manually kicked off using the Run button.
e.g.
Processed X components.
- no errors were found.
- the deployment was a dry run (no actual publishing).
If others are also deploying at the same time this count could be higher, the important check is that the scan was at least 10 minutes after it was deployed, 1 or more components were scanned and no errors specific to Remoting JMX are reported.
If no issues are reported complete the release.
Move the component to the releases repository:
git checkout <tag of the release>
mvn nxrm3:staging-move
Once this is done, the release will be pushed to the releases repository in Nexus and then to Maven Central.