Building Acegi Security System

Checking Out from CVS

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 CVS, execute the following command on a single line:

    maven scm:checkout-project
        -Dmaven.scm.method=cvs
        -Dmaven.scm.cvs.module=acegisecurity
        -Dmaven.scm.cvs.root=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/acegisecurity
        -Dmaven.scm.checkout.dir=acegisecurity

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.sourceforge.net). In this case, execute:

    cd $ACEGI_SECURITY/core
    maven jar:install
    cd $ACEGI_SECURITY/samples/contacts
    maven war
    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).

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, simple execute:

    cd $ACEGI_SECURITY/
    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    multiproject:clean multiproject:site
    	-Dmaven.jar.override=on 
    	-Dmaven.jar.clover-ant=1.3.3_01 
    	-Dmaven.scm.cvs.root=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/acegisecurity
    

If you're an Acegi Security developer, you can omit the maven.scm.cvs.root property, as your SourceForge login will be used along with CVS-over-SSH (see workaround discussion below if you have problems).

Memory and Clover Workarounds

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

    set MAVEN_OPTS=-Xmx512m

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

CVS-over-SSH Workarounds

Another possible problem is related to CVS-over-SSH ("ext" in CVSROOT) appearing to freeze. The following instructions assume you're an Acegi Security developer who has CVS access to the project, as if you're not then you shouldn't be trying to use CVS-over-SSH (the instructions above detail how to execute the "site" and "checkout" commands anonymously via "pserver").

First check your $ACEGI_SECURITY/build.properties contains a maven.username equal to your SourceForge username. If your Maven CVS commands still don't work, test you have automatic CVS-over-SSH access operational by executing the following command:

    cvs -d :ext:YOUR_SOURCEFORGE_USERNAME@cvs.sourceforge.net:/cvsroot/acegisecurity

If this CVS command doesn't work (without requiring any interaction such as password entry), you probably need to review your CVS setup. This will vary depending on your CVS client.

One Windows-based command line CVS-over-SSH-with-auto-login combination that works very well is to install CVSNT (which has a CVS client console utility) and PuTTY (download putty.zip) together, and use PuTTY's Pageant to automatically authenticate. A resource that describes in detail how to configure WinCVS (which internally uses CVSNT's command line client) with PuTTY (including automatic SSH authentication) is SourceForge's instructions. One issue with the SourceForge instructions is they forget to mention how to tell the CVS command-line client to use plink.exe, which is PuTTY's SSH command-line version. The solution is to execute set CVS_RSH=C:\Program Files\putty\plinkk.exe (or whatever path is appropriate to plink) before running the CVS command line. In fairness, the SourceForge instructions target the Windows front-end to CVS, whilst we need the command-line version to work.

If your CVS is working, try the maven-changelog-plugin on its own by executing the following command:

    cd $ACEGI_SECURITY/
    maven maven-changelog-plugin:report