Skip to end of metadata
Go to start of metadata
Table of Contents

Background 

This page is created in order to let users share how to maintain local customizations using Maven 2. Those customizations include:

  • changing properties in deploymentConfigContext.xml, cas-servlet.xml, etc.;
  • adding customized views and themes;
  • your own classes of Authentication Handlers, principles or special web flow elements;
  • and any other things you need.

Aim

By using Maven 2, we aim to perform the following:

  • Easier to extend and customize CAS server for your need
  • Less Pain in transiting to new CAS versions, by running maven

Assumptions

This HOW TO makes the following assumptions:

  • CAS 3.1.0 or greater
  • You know how to customize CAS, including adding classes and other web application resources
  • You know the basics of Maven 2, read the Maven in 5 minutes introduction.

Possible Solutions

1. cas-webapp overlay

First of all, create a directory where you will put your own customized files and where you will compile:

cd cas-server-3.1.1
mkdir cas-server-xxx

Then create a pom.xml file like this in your new directory:

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.xxx.cas</groupId>
    <artifactId>xxx-cas</artifactId>
    <version>1.4-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>XXX CAS webapp</name>
    <organization>
        <name>XXX</name>
        <url>http://www.xxx.fr</url>
    </organization>
    <description>The XXX's customizations to the JA-SIG CAS server.</description>
    <dependencies>
        <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-webapp</artifactId>
            <version>3.1.1</version>
            <type>war</type>
        </dependency>

        <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-core</artifactId>
            <version>3.1.1</version>
        </dependency>

        <!-- if you need LDAP handler -->
        <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-support-ldap</artifactId>
            <version>3.1.1</version>
        </dependency>

        <!-- if you need X509 handler -->
        <dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-support-x509</artifactId>
            <version>3.1.1</version>
        </dependency>

      </dependencies>
    <build>
        <finalName>cas</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>RELEASE</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>jasig-repository</id>
            <name>JA-SIG Maven2 Repository</name>
            <url>http://developer.ja-sig.org/maven2</url>
        </repository>
    </repositories>
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changelog-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>
</project>

Replace XXX by your organisation name and remove the X509 or the LDAP lines if you don't need these handlers.

Now you can put your own customized files in cas-server-3.1.1/cas-server-xxx/src/. For example if you want to overload the X509 handler sourcecode, create this file:

cas-server-xxx/src/main/java/X509CredentialsAuthenticationHandler.java



Then you just have to compile your project:

cd cas-server-3.1.1/cas-server-xxx/
mvn -Dmaven.test.skip=true package install

The war will be available in cas-server-3.1.1/cas-server-xxx/target/cas.war

Another way that is not explained above that need to be explained is: Install the cas.war into local repository. Build your own customization project using Maven 2, include the cas.war as a dependency

2. Defining a Maven2 Archetype

To be added.