# Building Acegi Security System

## Checking Out from Subversion (SVN)

This project uses Maven as project manager and build tool. We recommend you to install Maven 1.0.2 or greater before trying the following. Note there are workarounds at the bottom of this page.

To checkout Acegi Security from SVN, see our CVS Usage page.

## Quick Build

Often people reading this document just want to see if Acegi Security will work for their projects. They want to deploy a sample application, and that's about it (after all, all the reference documentation can be read online at http://acegisecurity.org). In this case, execute:

    cd $ACEGI_SECURITY/core (or cd %ACEGI_SECURITY%/core on Windows)

    maven jar:install

    cd $ACEGI_SECURITY/samples/contacts

    maven multiwar:multiwar

    copy $ACEGI_SECURITY/samples/contacts/target/acegi-security-sample-contacts-filter.war $YOUR_CONTAINER/webapps

Then load up your web container and visit http://localhost:8080/acegi-security-sample-contacts-filter/ (or whatever location is appropriate for your web container).

## Installing commons-attributes-plugin

To properly integrate Commons Attributes with Maven (as required by the Attributes Sample), you need to install an additional plugin.

To install the `commons-attributes-plugin`, execute the following commands:

    cd $ACEGI_SECURITY/doc

    maven plugin:download
        -DgroupId=commons-attributes
        -DartifactId=commons-attributes-plugin
        -Dversion=2.1

The second (final) command should be executed on a single line.

## Building All JARs

Sometimes people are already using Acegi Security, and they just want to build the latest code from CVS. To build all artifacts (JARs) and install them into your local Maven repository, simply perform a CVS checkout and install the `commons-attributes-plugin` (as detailed above), and then execute:

    cd $ACEGI_SECURITY/doc

    maven multiproject:install

You can then check your `$HOME/.maven/repository/acegisecurity` directory and it should contain all of the latest Acegi Security JARs.

## Building The Site

By "site" we mean the web site you can browse at http://acegisecurity.sourceforge.net, which includes the reference documentation and all of the Maven reports. If you'd like a local copy, simply execute:

    cd $ACEGI_SECURITY/doc

    maven -Dpassword= changelog:create-cvspass

    maven    multiproject:clean multiproject:site
    	-Dmaven.jar.override=on
    	-Dmaven.jar.clover-ant=1.3.3_01

As per the Maven Changelog Plugin Documentation, you must tell the plugin the "anonymous CVS pserver" password is blank. This is why there is the "create-cvspass" command shown above. You should only need to do this once.

## Memory and Clover Workarounds

If you get an `OutOfMemoryError`, simply execute the following before calling Maven:

    set MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=512m

If you get an `[ERROR] Invalid license: Invalid license file [E1202]`, this is because the `maven-clover-plugin` is using an old version of `clover-ant-xxx.jar`. Whilst Acegi Security's `project.properties` specifies a newer version, subprojects have an inheritence problem and don't pick this up (as of the time of writing). To workaround this issue, you need to specify those override properties on the command line. For example, to execute the Clover reports for the core subproject, you would do the following:

    cd $ACEGI_SECURITY/core

    maven clover:html-report -Dmaven.jar.override=on -Dmaven.jar.clover-ant=1.3.3_01