Build Hippo CMS From Source
The Hippo CMS project has been split into a number of components. This allows separate release cycles and reduces the amount of code that will be rebuilt when only working on a sub-project.
You need to have the following installed to be able to build all Hippo CMS components:
Define the Hippo CMS Maven snapshot repository
All Hippo CMS components are automatically built every night and their snapshots deployed to our Maven snapshot repository. In order to pull these in, your build environment must include the snapshot repository. To do this, set up your project in the following way:
Add the Hippo CMS snapshot repository to your settings.xml by defining the following profile:
<settings> <profiles> <profile> <id>use-hippo-maven2-snapshots</id> <activation> <property> <name>hippo.snapshots</name> <value>true</value> </property> </activation> <repositories> <repository> <id>hippo-maven2-snapshots</id> <name>Hippo CMS Maven 2 Snapshots</name> <url>https://maven.onehippo.com/maven2-snapshots/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>false</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>hippo-maven2-plugin-snapshots</id> <name>Hippo CMS Maven 2 Plugin Snapshots</name> <url>https://maven.onehippo.com/maven2-snapshots/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>false</enabled> </releases> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>
Using the above profile, you now can:
a) Enable the snapshots profile in your development machine, by modifying or setting your $MAVEN_OPTS environment variable to enable the hippo.snapshots by default:
$ export MAVEN_OPTS="$MAVEN_OPTS -Dhippo.snapshots=true"
b) temporarily disable the snapshots profile (for instance when tagging or building a tag) by using
$ mvn -Dhippo.snapshots=false ...
Or, if you don't want to enable it by default via your MAVEN_OPTS, enabling it only when you need it:
$ mvn -Dhippo.snapshots=true ...
Clone and build the archetype
$ git clone https://code.onehippo.org/cms-community/hippo-project-archetype.git $ cd hippo-project-archetype $ git checkout release/4.x $ mvn clean install
This will have built the archetype, which features a pre-built installed archetype in its target directory with all the latest code. To start it do:
$ cd target/gettingstarted $ mvn -P cargo.run
Check out the core Hippo open source projects you need
Depending on the project or projects you wish to work on, you can download the source code from the following locations:
You can use Git to clone one or all of the following source repositories:
These are only the main projects. For the full list of projects go to https://code.onehippo.org/groups/cms-community.
All the Hippo CMS code is maintained in release branches, not in the master branch. Master is the branch from which the next major Hippo CMS release will be cut. To find the branch or tag of a project for a specific Hippo CMS release inspect the Hippo CMS release POM you are using (this is either the parent POM of your project in the case you using Hippo CMS, or the grandparent POM of your project in case you are using BloomReach Experience) and check the version of the project you are using (you can also find this out by doing mvn dependency:tree in your project. The branch you are looking for is named release/major.minor.
$ git clone https://code.onehippo.org/cms-community/hippo-repository.git $ git checkout release/4.x $ mvn clean install -DskipTests
By downloading Hippo CMS, you agree to comply with our open source license, as well as the licenses of other components we include in our distribution. For an extensive overview of open source licenses, see our page on licenses.
The code of Hippo CMS is licensed under the Apache Software License 2.0. All included libraries are distributed either under the Apache Software License 2.0 or a compatible license, with the exception of the Sencha ExtJS library. Sencha ExtJS is distributed under GPL v3, with an Open Source License Exception for Applications. If you customise or redistribute Hippo CMS code that uses ExtJS components, then you must comply to their open source licenses - or buy an appropriate developer license from Sencha.
Build the projects
You can build each of these projects by performing
mvn -DskipTests clean install
Then rebuild the archetype gettingstarted project using
mvn clean verify
If you have JRebel installed, you can easily speed up this development cycle using JRebel.
Simply build the core projects with JRebel switch enabled:
mvn -DskipTests -Djrebel clean install
And build the gettingstarted project as before, but start it also with the JRebel switch enabled:
mvn -Pcargo.run -Djrebel
For instructions on how to develop the CMS frontend with automated builds see the README in the relevant projects/modules.