05 Local Maven Proxy

When deploying uPortal at your organization you will likely want to insulate your local build process from having to access external resources. The primary external service access issue with Maven is dependency retrieval from Maven repositories on the internet. There are several free Maven caching proxy solutions that can be used for both local caches of these public repositories as well as hosting your own repository if you need a place to put locally developed artifacts. A caching proxy mitigates the effects of one of these public Maven servers being down as well as speeding up your local builds.

Caching Proxies

The following are some of the freely available Maven 2 proxies.

Repositories used by uPortal

Maven repositories are identified by an <id> attribute in the project pom and repository mirrors are specified using this id in settings.xml. The following repositories are used by uPortal and its dependencies. They all need to be proxied using one of the above tools to remove the direct dependency on the public repositories during the build.

<repository>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <url>http://repo1.maven.org/maven2</url>
</repository>
<repository>
    <id>jasig-repository</id>
    <name>JA-SIG Maven2 Repository</name>
    <url>http://developer.ja-sig.org/maven2</url>
</repository>
<repository>
    <id>maven2-repository.dev.java.net</id>
    <name>Java.net Repository for Maven</name>
    <url>http://download.java.net/maven/2</url>
</repository>
<repository>
    <id>maven-repository.dev.java.net</id>
    <name>Java.net Repository for Maven 1</name>
    <url>http://download.java.net/maven/1</url>
</repository>
<repository>
    <id>dist.codehaus.org/mule</id>
    <name>Mule Repository</name>
    <url>http://dist.codehaus.org/mule/dependencies/maven2</url>
</repository>

Also if you are using a pre-release or SVN build of uPortal the following snapshot repositories are also used:

<repository>
    <releases>
        <enabled>false</enabled>
    </releases>
    <snapshots/>
    <id>jasig-snapshot</id>
    <name>JA-SIG Maven2 Repository</name>
    <url>http://developer.ja-sig.org/maven2-snapshot</url>
</repository>
<repository>
    <releases/>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
    <id>pluto-staging</id>
    <name>Apache Pluto Staging Repository</name>
    <url>http://people.apache.org/builds/portals-pluto/m2-staging-repository</url>
</repository>
<repository>
    <releases>
        <enabled>false</enabled>
    </releases>
    <snapshots/>
    <id>Codehaus Snapshots</id>
    <url>http://snapshots.repository.codehaus.org/</url>
</repository>
<repository>
    <releases>
        <enabled>false</enabled>
    </releases>
    <snapshots/>
    <id>apache.snapshots</id>
    <url>http://people.apache.org/repo/m2-snapshot-repository</url>
</repository>