Updated Maven Overlay Project How To (markdown)

master
Justin Richer 2013-06-14 06:40:00 -07:00
parent a2cde981e0
commit 9e11790b7d
1 changed files with 100 additions and 99 deletions

@ -2,7 +2,8 @@
1. Create a directory for the top level: `mkdir example-openid-connect-overlay`
2. Create `example-openid-connect-overlay/pom.xml`
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
```
<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.example</groupId>
@ -10,48 +11,53 @@
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>example-openid-connect-overlay</name>
<modules>
<module>OpenID-Connect-Java-Spring-Server</module>
<module>my-openid-connect</module>
</modules>
<dependencies>
<dependency>
<groupId>org.mitre</groupId>
<artifactId>openid-connect-server</artifactId>
<type>war</type>
<version>0.1-SNAPSHOT</version>
<version>${mitreid-version}</version>
</dependency>
<dependency>
<groupId>org.mitre</groupId>
<artifactId>openid-connect-parent</artifactId>
<type>pom</type>
<version>${mitreid-version}</version>
<scope>import</scope>
</dependency>
</dependencies>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<org.slf4j-version>1.5.10</org.slf4j-version>
<spring.security.version>3.1.0.RELEASE</spring.security.version>
<mitreid-version>1.0.2</mitreid-version>
</properties>
<build>
<finalName>my-openid-connect-server</finalName>
</build>
</project>
This creates a project with two modules, one being the `OpenID-Connect-Java-Spring-Server` (the original), and `my-openid-connect` which will hold our modifications we want to overlay. We also set some global properties (versions of Java, Spring, etc.) and the finalName of our project.
</project>
```
3. Now clone the `OpenID-Connect-Java-Spring-Server` into the `example-openid-connect-overlay/` directory
This creates a project with one sub module, `my-openid-connect` which will hold our modifications we want to overlay. We also set some global properties (versions of MITREid Connect, Java, Spring, etc.) and the final name of the resulting war file here.
cd example-openid-connect-overlay
git clone https://github.com/mitreid-connect/OpenID-Connect-Java-Spring-Server.git
cd OpenID-Connect-Java-Spring-Server
git submodule update --init --recursive
You now have the current version of OpenID-Connect-Java-Spring-Server. You should make sure that the version in `example-openid-connect-overlay/OpenID-Connect-Java-Spring-Server/pom.xml` matches the dependency version for `openid-connect-server` located in `example-openid-connect-overlay/pom.xml`
4. Create the my-openid-connect submodule
3. Create the my-openid-connect submodule
Create the directory `example-openid-connect-overlay/my-openid-connect` and cd into it
5. Create `example-openid-connect-overlay/my-openid-connect/pom.xml`
4. Create `example-openid-connect-overlay/my-openid-connect/pom.xml`
<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/xsd/maven-4.0.0.xsd">
```
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>example-openid-connect-overlay</artifactId>
@ -86,31 +92,26 @@
</plugin>
</plugins>
</build>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<org.slf4j-version>1.5.10</org.slf4j-version>
<spring.security.version>3.1.0.RELEASE</spring.security.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mitre</groupId>
<artifactId>openid-connect-server</artifactId>
<type>war</type>
<version>0.1-SNAPSHOT</version>
<version>${mitreid-version}</version>
</dependency>
<dependency>
<groupId>org.mitre</groupId>
<artifactId>openid-connect-common</artifactId>
<version>0.1-SNAPSHOT</version>
<version>${mitreid-version}</version>
</dependency>
</dependencies>
</project>
</project>
```
At this point you should be able to do a `mvn package` from the `example-openid-connect-overlay` level and you'll get a .war file at `example-openid-connect-overlay/my-openid-connect/target/my-openid-connect-server.war`. Remember this name was set in the `example-openid-connect-overlay/pom.xml` as the `finalName`.
6. Any files you create in the `my-openid-connect` maven project will be inserted into the resultant war file. If you use the same name as a file in `OpenID-Connect-Java-Spring-Server` project, such as `example-openid-connect-overlay/my-openid-connect/src/main/resources/META-INF/persistence.xml`, the version from the `my-openid-connect` project will be used in the .war file. This is good for setting up things like database connections. You may also create new Spring beans with new names (in `my-openid-connect/src/main/java/...`) that implement or override the standard openid-connect beans. If you mark these with the Spring Framework's `@Primary` annotation, Spring will use your class instead of the default classes. You may need to add additional dependencies to the `my-openid-connect/pom.xml` configurations so you're code will compile.
6. Any files you create in the `my-openid-connect` maven project will be inserted into the resultant war file. If you use the same name as a file in the upstream MITREid Connect server (`OpenID-Connect-Java-Spring-Server/openid-connect-server/`) project that you're overlaying, such as `example-openid-connect-overlay/my-openid-connect/src/main/resources/keystore.jwks`, the version from the `my-openid-connect` project will be used in the resulting .war file. This is good for setting up things like database connections or replacing the server's keypair. You may also create new Spring beans with new names (in `my-openid-connect/src/main/java/...`) that implement or override the standard openid-connect beans. If you mark these with the Spring Framework's `@Primary` annotation, Spring will use your class instead of the default classes automatically for autowiring. You can also add additional dependencies to the `my-openid-connect/pom.xml` configuration file to bring in new libraries.
***
### Files that are good and bad to overlay
Some files shouldn't be overlayed, such as web.xml and application-context.xml. Other files are good to overlay such as data-context.xml and local-config.xml.
# Files that are good and bad to overlay
Some files in the base project aren't meant to be changed by deployments and as such shouldn't be overlaid, such as web.xml and application-context.xml. Other files are good to overlay such as data-context.xml and local-config.xml. See the full description in the [server configuration](Server-configuration) documentation.