Maintaining local customizations using Maven 2
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.