Update Project Configuration

Update your implementation project's configuration to upgrade from brXM v15 to v16.

The Maven archetype and resulting reference implementation project have changed for brXM 16. These changes should be manually applied to your existing implementation projects. It’s a good practice to run the archetype to get a clean brXM 16.0.0 project, compare the files and take in the applicable changes.

Update Maven POMs

Upgrade Parent Version

Change the version of your project's parent artifact (either hippo-cms7-release or hippo-cms7-enterprise-release) to the most recent available version in the 16.x range.

With this change in place, you will have to go through a series of additional steps before your project is ready again to build and start up successfully.

Upgrade Essentials Version

Even though Essentials has been designed primarily to scaffold new projects, there may be reasons for hanging on to Essentials in your to-be-upgraded project. If so, change the <essentials.version> property in your project's root pom.xml to the most recent available version in the 16.x range. If not, consider deleting the essentials module from your project.

Update Bloomreach Maven Repository IDs

As of Bloomreach Experience Manager 16.0, all Bloomreach Maven repository IDs use the prefix bloomreach-maven2- instead of hippo-maven2-.

Update all Bloomreach Maven repository IDs accordingly in /project/repositories your project's 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

As of Bloomreach Experience Manager 16.0, the following properties are now defined in the release POM and should no longer be defined in /project/properties your project's root pom.xml:

    <jsp-api.version>2.2</jsp-api.version>
    <taglibs.version>1.2.5</taglibs.version>

Update Dependencies

In /project/dependencyManagement/dependencies in your project's 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 in your project's 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 in your project's 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

Since this is a major upgrade, including Java 11 to Java 17, Spring Boot 3, and Spring 6, check and upgrade all third-party libraries that are introduced as custom dependency for compatibility.

The product's root project pom (artifact org.onehippo.cms7:hippo-cms7-project) already defines version management for many of those, such as Apache Commons, Log4J, Http Client, and also test-scoped JUnit, Powermock, Mockito, and more. Please check your custom dependencies versions and update accordingly, using the provided version management if possible. The aim is to have as much of the same library versions in your implementation project as the product uses. 

For a complete list, see section "Third party libraries" of the Detailed release notes.

This relates to the Javax to Jakarta namespace change, see also at this upgrade step.

Update Maven Plugins, Notably Cargo

The versions of many Maven plugins have changed, see CMS-15636 for a full list. Most plugins are managed in the hippo-cms7-project pom that should be the top parent pom of the implementation project. Please check any custom plugin versions and update accordingly.

For Cargo however, the cargo-maven2-plugin is no longer maintained, so change all occurrences (4 by default) in pom.xml files from:

<artifactId>cargo-maven2-plugin</artifactId>

to

<artifactId>cargo-maven3-plugin</artifactId>

If the plugin's configuration contains an empty <repo.config /> occurrence, change it to <repo.config>repository.xml</repo.config> to keep things working locally.

Update CMS and Site Applications' Web.xml Files

Update to Servlet 6

Update the <web-app> attributes to their Servlet 6 values, in the web.xml files in 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 were previously deprecated and have now been removed from CMS application's web.xml.

For detailed instructions, please refer to the later step Adjust for Removed Deprecations.

Update Local Tomcat 10 Configuration Files 

Compare the following Tomcat configuration files in your implementation project with their equivalents in a new brXM 16.0 archetype project and apply the changes to your files:

  • conf/catalina.properties
  • conf/catalina-logging.properties
  • conf/context-mysql.xml
  • conf/context-postgres.xml
  • conf/context.xml
  • conf/server.xml

 

Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?