<?xml version="1.0" encoding="ISO-8859-1"?>
<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">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.    
-->
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.james</groupId>
  <artifactId>apache-jspf-project</artifactId>
  <parent>
    <groupId>org.apache.james</groupId>
    <artifactId>james-project</artifactId>
    <version>1.3</version>
  </parent>
  <name>Apache JAMES jSPF</name>
  <version>0.9.7</version>
  <description>
    Apache James jSPF is an SPF spec implementation written in Java
  </description>
  <url>http://james.apache.org/jspf/</url>
  <inceptionYear>2006</inceptionYear>

  <distributionManagement>
    <site>
      <id>jspf-website</id>
      <url>scp://people.apache.org/www/james.apache.org/jspf/</url>
    </site>
  </distributionManagement>
  
  <packaging>pom</packaging>
  
  <modules>
    <!-- The stage module contains dependencies for this product -->
    <!-- It make sure dependencies needed by other modules are   -->
    <!-- resolved/installed in the repository                    -->
    <module>stage</module> 
    <module>tester</module>
    <module>resolver</module>
    <module>assemble</module>
  </modules>

  <issueManagement>
    <system>JIRA</system>
    <url>http://issues.apache.org/jira/browse/JSPF</url>
  </issueManagement>

  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/james/jspf/tags/apache-jspf-project-0.9.7</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/jspf/tags/apache-jspf-project-0.9.7</developerConnection>
    <url>http://svn.apache.org/viewvc/james/jspf/tags/apache-jspf-project-0.9.7</url>
  </scm>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.4</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>2.0-beta-7</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.4</version>
        </plugin>
	      <plugin>
	        <artifactId>maven-jxr-plugin</artifactId>
	        <version>2.1</version>
	      </plugin>
	      <plugin>
	        <artifactId>maven-pmd-plugin</artifactId>
	        <version>2.4</version>
	        <configuration>
	          <targetjdk>1.4</targetjdk>
	          <rulesets>
	            <ruleset>/rulesets/basic.xml</ruleset>
	            <ruleset>/rulesets/controversial.xml</ruleset>
	          </rulesets>
	          <format>xml</format>
	          <linkXref>true</linkXref>
	          <sourceEncoding>utf-8</sourceEncoding>
	          <minimumTokens>100</minimumTokens>
	        </configuration>
	      </plugin>
	      <plugin>
	        <groupId>org.codehaus.mojo</groupId>
	        <artifactId>rat-maven-plugin</artifactId>
	        <version>1.0-alpha-3</version>
	      </plugin>
	      <plugin>
	        <artifactId>maven-jar-plugin</artifactId>
	        <version>2.2</version>
	      </plugin>
	      <plugin>
	        <artifactId>maven-compiler-plugin</artifactId>
	        <version>2.0.2</version>
	        <configuration>
	          <source>${target.jdk}</source>
	          <target>${target.jdk}</target>
	          <encoding>iso8859-1</encoding>
	        </configuration>
	      </plugin>      
	      <plugin>
	        <artifactId>maven-remote-resources-plugin</artifactId>
	        <version>1.0</version>
	      </plugin>
	      <plugin>
	        <artifactId>maven-surefire-plugin</artifactId>
	        <version>2.4.3</version>
	      </plugin>
	      <plugin>
	        <artifactId>maven-surefire-report-plugin</artifactId>
	        <version>2.4.3</version>
	      </plugin> 
      </plugins>
    </pluginManagement>
  </build>
  
	<dependencyManagement>
	  <dependencies>
	    <dependency>
	      <groupId>org.apache.james.jspf</groupId>
	      <artifactId>apache-jspf-tester</artifactId>
        <version>0.9.7</version>
      </dependency>
	    <dependency>
	      <groupId>org.apache.james.jspf</groupId>
	      <artifactId>apache-jspf-resolver</artifactId>
	      <classifier>tests</classifier>
        <version>0.9.7</version>
      </dependency>
      <dependency>
        <groupId>dnsjava</groupId>
        <artifactId>dnsjava</artifactId>
        <version>2.0.6</version>
      </dependency>
      <dependency>
        <groupId>uk.nominet</groupId>
        <artifactId>dnsjnio</artifactId>
        <version>1.0.2</version>
	    </dependency>
	    <dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>3.8.1</version>
	      <scope>test</scope>
	    </dependency>
	    <dependency>
	      <groupId>log4j</groupId>
	      <artifactId>log4j</artifactId>
	      <version>1.2.14</version>
	    </dependency>
	    <dependency>
	      <groupId>org.jvyaml</groupId>
	      <artifactId>jvyaml</artifactId>
	      <version>0.2.1</version>
	    </dependency>
	    <dependency>
	      <groupId>commons-cli</groupId>
	      <artifactId>commons-cli</artifactId>
	      <version>1.1</version>
	      <exclusions>
	        <exclusion>
	          <groupId>commons-logging</groupId>
	          <artifactId>commons-logging</artifactId>
	        </exclusion>
	        <exclusion>
	          <groupId>commons-lang</groupId>
	          <artifactId>commons-lang</artifactId>
	        </exclusion>
	      </exclusions>
	    </dependency>
	  </dependencies>
	</dependencyManagement>
	
  <mailingLists>
    <mailingList>
      <name>Apache jSPF Developement</name>
      <subscribe>server-dev-subscribe@james.apache.org</subscribe>
      <unsubscribe>server-dev-unsubscribe@james.apache.org</unsubscribe>
      <post>server-dev@james.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/james-server-dev/</archive>
    </mailingList>
  </mailingLists>

  <properties>
    <project.build.sourceEncoding>iso-8859-15</project.build.sourceEncoding>
    <target.jdk>1.4</target.jdk>
  </properties>

</project>
