Using the hippo-cms7-release pom for Bloomreach Experience Manager projects
Introduction
The hippo-cms7-release master pom defines all standard Bloomreach Experience Manager product artifacts dependencies in the correct combination of versions representing an officially endorsed and supported Bloomreach Experience Manager release. This makes it much easier to setup and maintain your custom Bloomreach Experience Manager project and keep it up to date with newer versions. For each officially endorsed and supported Bloomreach Experience Manager release a corresponding updated version of the hippo-cms7-release pom will be made available through the Hippo maven repository, e.g.
org.onehippo.cms7:hippo-cms7-release:pom:13.0.0
Features of the hippo-cms7-release pom
The hippo-cms7-release pom provides the following important sections and meta data definitions:
Standardized Bloomreach Experience Manager product version properties
The properties section of the hippo-cms7-release pom defines a version property for each standard Bloomreach Experience Manager product:
<properties> <hippo.repository.version>13.0.0</hippo.repository.version> <hippo.cms.version>13.0.0</hippo.cms.version> <hippo.packages.version>13.0.0</hippo.packages.version> <hippo.hst.version>13.0.0</hippo.hst.version> ... <forge.dashboard-document-wizard.version>13.0.0</forge.dashboard-document-wizard.version> <forge.gallerypicker.version>13.0.0</forge.gallerypicker.version> .. </properties>
These version properties are used in the subsequent dependency management section to ensure all Bloomreach Experience Manager product specific artifacts are defined using the same version. Furthermore, this specific combination of Bloomreach Experience Manager products versions together constitute the officially endorsed and supported Bloomreach Experience Manager release depicted by this hippo-cms7-release pom. This doesn't mean other version combinations are not allowed or supported, but such other combinations might be less, or not at all, validated by Hippo itself, unless explicitly stated otherwise.
If there is a need however to override to a (usually newer) other version of a specific Bloomreach Experience Manager product, these property definitions come in very handy. If your custom Bloomreach Experience Manager maven project extends from the hippo-cms7-release pom, you only need to override/redefine one of these standardized properties in your local maven project like:
<properties> ... <!-- temporary override to the latest and greatest under development version of HST --> <hippo.hst.version>13.0.1-SNAPSHOT</hippo.hst.version> ... </properties>
That's it. No further changes should be needed nor desired! If at a later time a newer version of the hippo-cms7-release pom becomes available with the product version you used in the override (or newer), you only have to upgrade to the newer hippo-cms7-release pom and remove the temporary version override for the specific product. By just looking at a custom Bloomreach Experience Manager project's (main) property definitions, it will be very easy to see if a custom combination/override of Bloomreach Experience Manager products is used, or not.
Standard Maven repositories
The hippo-cms7-release pom defines additional useful Maven repositories for your convenience, such as for example the Hippo forge repository that hosts CMS and/or site plugins. For the certified Bloomreach Experience Manager artifacts you will not need to define additional Maven repositories, other than the obligatory standard Hippo maven repository for the hippo-cms7-release pom itself.
Dependency management for all Bloomreach Experience Manager product artifacts and additional certified artifacts
The dependency management section of the hippo-cms7-release pom defines all artifacts from each Bloomreach Experience Manager product as specified by their version in the properties section (see above). This really is, or should be, the complete set of available artifacts for a specific version, including those artifacts which (typically) are only needed or used by Hippo internally like for testing purposes. If you need a specific artifact dependency in your custom Bloomreach Experience Manager project, you can and may copy/paste its definition from the hippo-cms7-release pom. However: do not change the <version> element for the dependency, but better yet: remove the <version> element all together (thereby automatically inheriting from the dependency management configuration from the hippo-cms7-release pom).
A concrete Bloomreach Experience Manager product artifact dependency should be (version) "managed" only through the hippo-cms7-release pom, which should only be overridden through a overriding version property definition override as described above. Only include those artifact dependencies in your project which you actually use so that it remains clear which (Bloomreach Experience Manager or otherwise) products and features your project depends on. If you no longer use or need a specific dependency, remove it!
Inheriting from hippo-cms7-project parent pom
The hippo-cms7-release pom itself inherits from the hippo-cms7-project parent pom, which also is used as parent pom by all (standard) Bloomreach Experience Manager products. Therefore when you use the hippo-cms7-release pom as parent, you'll also inherit the Maven meta definitions from the hippo-cms7-project pom! The hippo-cms7-project pom provides a set of minimum required and/or convenient definitions also used and needed for each individual Bloomreach Experience Manager product. Examples are the minimum supported Maven version and Java version, validated/proved working versions of several Maven plugins, etc. And, as master pom for all Bloomreach Experience Manager products, it also defines the (default) license (ASL2), company info (Hippo), Hippo developers info, etc. Not all these definitions will be required or desired by custom projects extending from the hippo-cms7-release pom. When you inherit from the hippo-cms7-release pom for your custom CMS project, take specific note of the following standard Maven pom elements and fill them in according to your own project requirements or "reset" them by redefining them with empty values:
<url/> <inceptionYear/> <organization/> <licenses> <license/> </licenses> <mailingLists> <mailingList/> </mailingLists> <developers> <developer/> </developers> <contributors> <contributor/> </contributors> <issueManagement/> <scm> <connection/> <developerConnection/> <url/> </scm> <ciManagement/> <distributionManagement> <repository> <id/> <url/> </repository> <snapshotRepository> <id/> <url/> </snapshotRepository> </distributionManagement>
Note: when you use the Hippo archetype to generate a new custom project the above empty "reset" values will be provided automatically.
Creating a new Bloomreach Experience Manager project based on the hippo-cms7-release pom
The easiest way to create a new Bloomreach Experience Manager project using the hippo-cms7-release pom as parent is using the hippo website archetype. For detailed instructions see the Getting Started Trail.
Enterprise project
When you have are having an enterprise project, instead of the hippo-cms7-release pom as parent you should have the hippo-cms7-enterprise-release as your parent pom.