This article covers a Hippo CMS version 7.7. There's an updated version available that covers our most recent release.

See also...

How do I build Hippo CMS from scratch? 

The Hippo CMS 7 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.

Define the Hippo maven snapshot repository

Add the Hippo 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 Maven 2</name>
          <url>http://maven.onehippo.com/maven2-snapshots/ </url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>
</settings> 

Using the above (not actived by default) profile, you now can:

a) as a Hippo developer modify or set your $MAVEN_OPTS environment variable to enable the hippo.snapshots by default through:

$ export MAVEN_OPTS="$MAVEN_OPTS -Dhippo.snapshots=true"   

b) temporarily disable using the snapshot repository (like when tagging or building a tag) by using

$ mvn -Dhippo.snapshots=false ...

Or, without enabling it by default of course you always can use:

$ mvn -Dhippo.snapshots=true

or even shorter ('true' is a 'default' value):

$ mvn -Dhippo.snapshots

Check out the core Hippo open source projects

Build the projects

For each of those (in the above order), perform

mvn -DskipTests clean install 

For convenience, you can copy paste the following into a shell to checkout and build all dependencies: 

If you are a committer please use https instead of http.

mkdir hippo
cd hippo
svn co http://svn.onehippo.org/repos/hippo/hippo-cms7/project/trunk project
svn co http://svn.onehippo.org/repos/hippo/hippo-cms7/repository/trunk/ repository
svn co http://svn.onehippo.org/repos/hippo/hippo-cms7/cms/trunk/ cms
svn co http://svn.onehippo.org/repos/hippo/hippo-cms7/packages/trunk/ packages
svn co http://svn.onehippo.org/repos/hippo/hippo-cms7/release/trunk release
svn co http://svn.onehippo.org/repos/hippo/hippo-cms7/archetypes/trunk/ archetypes
cd project
mvn -DskipTests clean install
cd ../repository
mvn -DskipTests clean install
cd ../cms
mvn -DskipTests clean install
cd ../packages
mvn -DskipTests clean install
cd ../release
mvn -DskipTests clean install
cd ../archetypes
mvn -DskipTests clean install  

And then update using: 

cd hippo
cd project
svn up
mvn -DskipTests clean install
cd ../repository
svn up
mvn -DskipTests clean install
cd ../cms
svn up
mvn -DskipTests clean install
cd ../packages
svn up
mvn -DskipTests clean install
cd ../release
svn up
mvn -DskipTests clean install
cd ../archetypes
svn up
mvn -DskipTests clean install 

When working on one of the above components, you do not have to rebuild all other components. It is enough to rebuild that component, and the end product that is used, such as the packages project.

cd repository
mvn -DskipTests clean install 

Alternately you can use this simple script (Contributed by Mansour Al Akeel)

#!/bin/bash
 
URLS=( "http://svn.onehippo.org/repos/hippo/hippo-cms7/project" "http://svn.onehippo.org/repos/hippo/hippo-cms7/repository" "http://svn.onehippo.org/repos/hippo/hippo-cms7/cms" "http://svn.onehippo.org/repos/hippo/hippo-cms7/packages" "http://svn.onehippo.org/repos/hippo/hippo-cms7/release" "http://svn.onehippo.org/repos/hippo/hippo-cms7/archetypes" )
 
count=${#URLS[*]}
 
for  (( i=0 ; i < count;i++)) ;
do
   proj=${URLS[i]}
   LATEST_TAG=`svn ls $proj/tags | tail -n 1`
   PROJECT=`basename $proj`
   echo -e "latest tag for \033[1;32m$PROJECT\033[0m is \033[1;32m$LATEST_TAG\033[0m"
   svn co $proj/tags/$LATEST_TAG $PROJECT
done