...
1. Add namespace declarations and attributes
Code Block |
---|
|
<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">
|
2. Delete commented out lines of code
General
<groupId> = org.sakaiproject.project name
Code Block |
---|
|
<groupId>org.sakaiproject.polls</groupId>
|
Define project base pom version explicitly (i.e., do not inherit version from <parent>).
Use project variables
Code Block |
---|
|
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
|
List <developers>
List <contributors>
Project base pom
Add master <parent>
Code Block |
---|
|
<parent>
<groupId>org.sakaiproject</groupId>
<artifactId>master</artifactId>
<version>2.10-SNAPSHOT</version>
<relativePath>../master/pom.xml</relativePath>
</parent>
|
Define <scm> (Note - makes sure this points to your project!)
Code Block |
---|
|
<scm>
<connection>scm:svn:https://source.sakaiproject.org/svn/basiclti/trunk</connection>
<developerConnection>scm:svn:https://source.sakaiproject.org/svn/basiclti/trunk</developerConnection>
<url>https://source.sakaiproject.org/svn/basiclti/trunk</url>
</scm>
|
Add site property
Code Block |
---|
|
<properties>
<url.localsite>scp://source.sakaiproject.org/var/www/html/release/basiclti/${project.version}</url.localsite>
</properties>
|
Define <distributionManagement>
Code Block |
---|
|
<distributionManagement><distributionManagement>
<site>
<downloadUrl>http://source.sakaiproject.org/maven2/</downloadUrl><id>sakai-site</id>
<name>Sakai release Site</name>
<url>${url.localsite}</url>
<snapshotRepository>
</site>
</distributionManagement>
|
Define <pluginRepositories>
Code Block |
---|
|
<pluginRepositories>
<pluginRepository>
<uniqueVersion>false</uniqueVersion> <id>sakai<id>maven2-mavencentral-snapshots-scp<repo</id>
<name>Sakai<name>Maven2 snapshotCentral Repo</name>
<url>scp<url>http://sourcerepo1.sakaiprojectmaven.org/var/www/html/maven2-snapshots<maven2/</url>
<layout>default</layout><releases>
</snapshotRepository> <enabled>true</enabled>
<repository> <uniqueVersion>false</uniqueVersion></releases>
<snapshots>
<id>sakai-maven2-scp</id> <name>Sakai maven2 repository<<enabled>false</name>enabled>
<url>scp://source.sakaiproject.org/var/www/html/maven2</url></snapshots>
</pluginRepository>
<layout>default</layout> <pluginRepository>
</repository> <id>Sakai Plugin <site>Repo</id>
<id>sakai-site</id><url>http://source.sakaiproject.org/maven2</url>
<releases>
<name>Sakai release Site</name> <url>${url.localsite}</url><enabled>true</enabled>
</site>
</distributionManagement>
|
Define <pluginRepositories>
Code Block |
---|
xml | xml |
<pluginRepositories>releases>
<snapshots>
<pluginRepository> <id>maven2-central-repo</id> <enabled>false</enabled>
<name>Maven2 Central Repo<</name>snapshots>
</pluginRepository>
<url>http://repo1.maven.org/maven2/</url>
pluginRepositories>
|
Define <repositories>
Code Block |
---|
|
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<releases> <name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>true< <enabled>false</enabled>
</releases>
<snapshots>
</releases> <enabled>true</enabled>
<snapshots> </snapshots>
</repository>
<enabled>false</enabled> <repository>
</snapshots> <id>sakai-maven</id>
</pluginRepository> <pluginRepository><name>Sakai Maven Repo</name>
<id>Sakai Plugin Repo<<layout>default</id>layout>
<url>http://source.sakaiproject.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>repository>
</pluginRepositories> |
Define <repositories>
Code Block |
---|
xml | xml |
<repositories>
<repository>
<id>sakai-maven<<id>default</id>
<name>Sakai<name>Maven MavenRepository Repo<Switchboard</name>
<layout>default</layout>
<url>http://sourcerepo1.sakaiprojectmaven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
|
Add <reporting>
Code Block |
---|
|
<reporting>
<plugins>
<repository> <plugin>
<id>sakai-maven2-snapshots</id> <name>Sakai Maven Repo</name> <groupId>org.apache.maven.plugins</groupId>
<layout>default</layout><artifactId>maven-javadoc-plugin</artifactId>
<url>http://source.sakaiproject.org/maven2-snapshots</url><version>2.7</version>
<configuration>
<releases> <enabled>false</enabled><debug>true</debug>
</releases> <links>
<snapshots> <enabled>true</enabled><link>http://download.oracle.com/javase/1.5.0/docs/api/</link>
</snapshots><link>http://download.oracle.com/javase/6/docs/api/</link>
</repository>
links>
<breakiterator>true</breakiterator>
<repository> <id>default</id><verbose>false</verbose>
<name>Maven Repository Switchboard</name><aggregate>true</aggregate>
<layout>default<<minmemory>168m</layout>minmemory>
<url>http://repo1.maven.org/maven2</url> <maxmemory>1024m</maxmemory>
<releases> <enabled>true</enabled><additionalJOption>-J-Xms168m -J-Xmx1024m -J-XX:PermSize=128m -J-XX:NewSize=64m</additionalJOption>
</releases>configuration>
</plugin>
<snapshots> </plugins>
</reporting>
|
Gotchas
Beware of API jar scope
Sakai API jars are deployed to $CATALINA_HOME/shared/lib and are available on the classpath. If you declare a dependency on a Sakai API be sure to set it's <scope> to provided.
Code Block |
---|
|
<dependencyManagement>
<dependencies>
<dependency>
<enabled>false</enabled><groupId>org.sakaiproject.courier</groupId>
<artifactId>sakai-courier-api</artifactId>
</snapshots> <version>2.9-SNAPSHOT</version>
<scope>provided</scope>
</repository>
dependency>
. . .
</dependencies>
</repositories>dependencyManagement>
|
Examples
Project | SVN | Notes |
---|
BasicLTI | https://source.sakaiproject.org/svn/basiclti/ | |
Profile2 | https://source.sakaiproject.org/svn/profile2/ | |
Samigo | https://source.sakaiproject.org/svn/sam/ | Uses a profile to sign it's audio jar; assembly deploys OSID jar to /shared |
Sitestats | https://source.sakaiproject.org/svn/sitestats/ | |