<?xml version="1.0" encoding="ISO-8859-15"?>
<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>jsieve-project</artifactId>
  <name>Apache JAMES JSieve Project</name>
  <version>0.4</version>
  <packaging>pom</packaging>
  <description>
    Apache JAMES JSieve Project
  </description>
  <parent>
    <groupId>org.apache.james</groupId>
    <artifactId>james-project</artifactId>
    <version>1.5</version>
  </parent>
  <url>http://james.apache.org/jsieve/</url>
  <inceptionYear>2008</inceptionYear>
  
  <properties>
    <!-- Override the source descriptor -->
    <sourceReleaseAssemblyDescriptor>src</sourceReleaseAssemblyDescriptor>
    
    <!--
    The website is committed to subversion. This property can be overriden
    to upload the site to a local staging location.
    For example, adding the following to ~/.m2/settings.xml will upload
    to localhost:
    
      <profiles>
        <profile>
           <id>main</id>
           <activation>
              <activeByDefault>true</activeByDefault>
           </activation>
           <properties>
              <james.www>scp://localhost/www</james.www>
              <james.www.id>localhost</james.www.id>
      ...
    -->
    <!-- General location for site stage -->
    <james.www>scp://people.apache.org/www/james.apache.org/</james.www>
    <!-- Project specific location, allowing specific override -->
    <james.jsieve.www>${james.www}/jsieve/</james.jsieve.www>
    <!-- Overridding this value allows single set of loopback settings to be maintained -->
    <james.www.id>jsieve-website</james.www.id>
    
  </properties>
  
  
  <modules>
    <module>main</module>
    <module>mailet</module>
    <module>util</module>
    <module>assemble</module>
  </modules>
  
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.0.2</version>
          <configuration>
            <source>1.5</source>
            <target>1.5</target>
            <encoding>iso8859-1</encoding>
          </configuration>
        </plugin> 
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <archive>
            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
              <manifestEntries>
                <Specification-Title>${pom.name}</Specification-Title>
                <Specification-Version>${pom.version}</Specification-Version>
                <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
                <Implementation-Title>${pom.name}</Implementation-Title>
                <Implementation-Version>${pom.version}</Implementation-Version>
                <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
                <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
                <url>${pom.url}</url>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>rat-maven-plugin</artifactId>
          <version>1.0-alpha-3</version>
          <executions>
            <execution>
              <phase>verify</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>1.4.3</version>
          <executions>
            <execution>
              <id>bundle-manifest</id>
              <phase>process-classes</phase>
              <goals>
                <goal>manifest</goal>
              </goals>
            </execution>
          </executions>
          <extensions>true</extensions>
          <configuration>
            <instructions>
              <Export-Package>org.apache.jsieve.*</Export-Package>
              <Embed-Dependency>*;scope=runtime</Embed-Dependency>
            </instructions>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-doap-plugin</artifactId>
          <executions>
            <execution>
              <id>site</id>
              <phase>site</phase>
              <goals>
                <goal>generate</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
           <doapOptions>
             <programmingLanguage>java</programmingLanguage>
             <category>mail</category>
             <download-page>http://james.apache.org/download.cgi</download-page>
           </doapOptions>
  
           <asfExtOptions>
             <included>true</included>
             <pmc>http://james.apache.org</pmc>
             <name>Apache JAMES</name>
             <standards>
              <standard>
                <id>RFC3028</id>
                <title>Sieve: A Mail Filtering Language</title>
                <body>IEFT</body>
                <url>http://www.ietf.org/rfc/rfc3028.txt</url>
              </standard>
             </standards>
           </asfExtOptions>
  
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <distributionManagement>
    <site>
      <id>${james.www.id}</id>
      <url>${james.jsieve.www}</url>
    </site>
  </distributionManagement>

  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/JSIEVE</url>
  </issueManagement>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/james/jsieve/tags/jsieve-project-0.4
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/james/jsieve/tags/jsieve-project-0.4
    </developerConnection>
    <url>
      http://svn.apache.org/viewcvs.cgi/james/jsieve/tags/jsieve-project-0.4?root=Apache-SVN
    </url>
  </scm>

  <mailingLists>
    <mailingList>
	    <name>Apache JAMES Server List</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>
  
  <dependencyManagement>
   <dependencies>
    <dependency>
      <groupId>org.apache.james</groupId>
      <artifactId>apache-jsieve</artifactId>
      <version>${project.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.james</groupId>
      <artifactId>apache-jsieve-mailet</artifactId>
      <version>${project.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.james</groupId>
      <artifactId>apache-jsieve-util</artifactId>
      <version>${project.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.james</groupId>
      <artifactId>apache-mailet</artifactId>
      <version>2.4</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.james</groupId>
      <artifactId>apache-mailet-base</artifactId>
      <version>1.0</version>
    </dependency>
      
    <dependency>
      <groupId>org.apache.james</groupId>
      <artifactId>apache-mime4j</artifactId>
      <version>0.6</version>
    </dependency>
    
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
      <exclusions>
          <exclusion>
            <groupId>avalon-framework</groupId>
            <artifactId>avalon-framework</artifactId>
          </exclusion>
          <exclusion>
            <groupId>logkit</groupId>
            <artifactId>logkit</artifactId>
          </exclusion>
          <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
          </exclusion>
       </exclusions>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>jmock</groupId>
      <artifactId>jmock</artifactId>
      <version>1.1.0</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.14</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4</version>
    </dependency>
    
    <dependency>
      <groupId>javax.activation</groupId>
      <artifactId>activation</artifactId>
      <version>1.1</version>
    </dependency>
   </dependencies>
  </dependencyManagement>

  <reporting>
    <plugins>
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <configuration>
            <onlyCurrentVersion>true</onlyCurrentVersion>
            <resolutionIds>Closed</resolutionIds>
        </configuration>
        <reportSets>
            <reportSet>
                <reports>
                    <report>jira-report</report>
                </reports>
            </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>
  
</project>
