Update Project Configuration
Update your project configuration to migrate from brXM version 15 to version 16.
The Maven archetype and reference implementation have changed in brXM 16. Manually apply these changes to your existing implementation project. To identify required updates, generate a clean brXM 16.0.0 project using the archetype, compare files, and incorporate relevant changes.
Update Maven POMs
Upgrade Parent Version
Set your project's parent artifact (hippo-cms7-release or hippo-cms7-enterprise-release) to the latest available 16.x version.
After updating the parent version, complete the additional steps below to ensure your project builds and starts successfully.
Upgrade Essentials Version
If your project still uses Essentials, update the <essentials.version> property in your root pom.xml to the latest 16.x version. If you no longer require Essentials, remove the essentials module from your project.
Update Bloomreach Maven Repository IDs
Starting with brXM 16.0, all Bloomreach Maven repository IDs use the bloomreach-maven2- prefix instead of hippo-maven2-.
Update all Bloomreach Maven repository IDs in the /project/repositories section of your root pom.xml:
<repositories> <repository> <id>bloomreach-maven2</id> <!-- leave any other configuration here the same --> </repository> <repository> <id>bloomreach-maven2-enterprise</id> <!-- leave any other configuration here the same --> </repository> </repositories>
Remove Properties
brXM 16.0 defines the following properties in the release POM. Remove them from the /project/properties section of your root pom.xml:
<jsp-api.version>2.2</jsp-api.version> <taglibs.version>1.2.5</taglibs.version>
Update Dependencies
In the /project/dependencyManagement/dependencies section of your root pom.xml, update the following dependencies:
jsp-api:
<groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId>
Update to:
<groupId>jakarta.servlet.jsp</groupId> <artifactId>jakarta.servlet.jsp-api</artifactId>
taglibs-standard-spec:
<groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-spec</artifactId>
Update to:
<groupId>com.bloomreach.xm</groupId> <artifactId>taglibs-standard-spec-jakarta</artifactId>
taglibs-standard-impl:
<groupId>org.apache.taglibs</groupId> <artifactId>taglibs-standard-impl</artifactId>
Update to:
<groupId>com.bloomreach.xm</groupId> <artifactId>taglibs-standard-impl-jakarta</artifactId>
In site/components/pom.xml, under /project/dependencies, update the same three dependencies as above: jsp-api, taglibs-standard-spec, and taglibs-standard-impl.
In the cargo.run profile of your root pom.xml, under /project/profiles/profile/id/dependencies, update the following dependency:
annotation-api:
<groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId>
Update to:
<groupId>jakarta.annotation</groupId> <artifactId>jakarta.annotation-api</artifactId>
In the dist profile of your root pom.xml, under /project/profiles/profile/id/dependencies, remove the javax.annotation-api dependency:
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <scope>provided</scope> </dependency>
Update Third Party Libraries
This upgrade includes changes such as Java 11 to Java 17, Spring Boot 3, and Spring 6. Review and update all third-party libraries introduced as custom dependencies to ensure compatibility.
The root project POM (org.onehippo.cms7:hippo-cms7-project) manages versions for many libraries, including Apache Commons, Log4J, Http Client, JUnit, Powermock, Mockito, and others. Align your custom dependencies with the managed versions where possible.
For a complete list, see the "Third party libraries" section in the Detailed release notes.
This step is related to the Javax to Jakarta namespace migration. For details, see Migrate from Javax to Jakarta Namespace.
Update Maven Plugins, Notably Cargo
Many Maven plugin versions have changed. Refer to CMS-15636 for a full list. Most plugins are managed in the hippo-cms7-project POM, which should be the top-level parent POM. Update any custom plugin versions as needed.
The cargo-maven2-plugin is no longer maintained. Replace all occurrences (typically four) in your pom.xml files with:
<artifactId>cargo-maven2-plugin</artifactId>
Change to:
<artifactId>cargo-maven3-plugin</artifactId>
If the plugin configuration contains an empty <repo.config />, update it to <repo.config>repository.xml</repo.config> to maintain local functionality.
Update CMS and Site Applications' Web.xml Files
Update to Servlet 6
Update the <web-app> element attributes to match Servlet 6 in the web.xml files of the cms and site modules:
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0" id="cms|site"> // leave the id (either "cms" or "site") as is
Remove ConcurrentLoginFilter and ConcurrentLoginListener
The ConcurrentLoginFilter and ConcurrentLoginListener have been removed from the CMS application's web.xml. These components were previously deprecated.
For detailed removal instructions, see Adjust for Removed Deprecations.
Update Local Tomcat 10 Configuration Files
Compare the following Tomcat configuration files in your implementation project with those from a new brXM 16.0 archetype project. Apply any necessary changes:
conf/catalina.propertiesconf/catalina-logging.propertiesconf/context-mysql.xmlconf/context-postgres.xmlconf/context.xmlconf/server.xml