<?xml version="1.0" encoding="ISO-8859-15"?>
<!--
    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.
-->
<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>

    <parent>
        <groupId>org.apache.james</groupId>
        <artifactId>james-project</artifactId>
        <version>1.8.1</version>
    </parent>

    <artifactId>apache-jsieve</artifactId>
    <version>0.5</version>
    <packaging>pom</packaging>

    <name>Apache James JSieve</name>
    <description>Apache James JSieve</description>
    <url>http://james.apache.org/jsieve/</url>
    <inceptionYear>2008</inceptionYear>

    <modules>
        <module>all</module>
        <module>core</module>
        <module>mailet</module>
        <module>manager</module>
        <module>util</module>
    </modules>

    <scm>
        <connection>scm:svn:http://svn.apache.org/repos/asf/james/jsieve/tags/apache-jsieve-0.5</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/james/jsieve/tags/apache-jsieve-0.5</developerConnection>
        <url>http://svn.apache.org/viewcvs.cgi/james/jsieve/tags/apache-jsieve-0.5?root=Apache-SVN</url>
    </scm>
    <issueManagement>
        <system>JIRA</system>
        <url>https://issues.apache.org/jira/browse/JSIEVE</url>
    </issueManagement>

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

    <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>scpexe://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>
        <target.jdk>1.5</target.jdk>
        <mime4j.version>0.7.2</mime4j.version>

        <javax.mail.groupId>org.apache.geronimo.javamail</javax.mail.groupId>
        <javax.mail.artifactId>geronimo-javamail_1.4_mail</javax.mail.artifactId>
        <javax.activation.groupId>org.apache.geronimo.specs</javax.activation.groupId>
        <javax.activation.artifactId>geronimo-activation_1.1_spec</javax.activation.artifactId> 
        <!--
        <javax.activation.groupId>javax.activation</javax.activation.groupId>
        <javax.activation.artifactId>activation</javax.activation.artifactId>
        <javax.mail.groupId>javax.mail</javax.mail.groupId>
        <javax.mail.artifactId>mail</javax.mail.artifactId>
          -->
    </properties>

    <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-core</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-jsieve-manager-api</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-jsieve-manager-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-jsieve-manager-jsieve</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-jsieve-manager-mailet</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-jsieve-manager-mock</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-mailet</artifactId>
                <version>2.4</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.mail</groupId>
                        <artifactId>mail</artifactId>
                    </exclusion>
                </exclusions> 
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-mailet-base</artifactId>
                <version>1.0</version>
                <exclusions>
                    <exclusion>
                        <groupId>javax.mail</groupId>
                        <artifactId>mail</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.activation</groupId>
                        <artifactId>activation</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-mime4j-core</artifactId>
                <version>${mime4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.james</groupId>
                <artifactId>apache-mime4j-dom</artifactId>
                <version>${mime4j.version}</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>
            <dependency>
                <groupId>org.apache.geronimo.specs</groupId>
                <artifactId>geronimo-activation_1.1_spec</artifactId>
                <version>1.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.geronimo.javamail</groupId>
                <artifactId>geronimo-javamail_1.4_mail</artifactId>
                <version>1.8.3</version>
            </dependency> 
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                            <manifestEntries>
                                <Specification-Title>${project.name}</Specification-Title>
                                <Specification-Version>${project.version}</Specification-Version>
                                <Specification-Vendor>The Apache Software Foundation</Specification-Vendor>
                                <Implementation-Title>${project.name}</Implementation-Title>
                                <Implementation-Version>${project.version}</Implementation-Version>
                                <Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
                                <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
                                <url>${project.url}</url>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>verify</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <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>
                    <inherited>true</inherited>
                    <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>
                            <shortdesc>${project.description}</shortdesc>
                        </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>
                            <charter></charter>
                        </asfExtOptions>
                    </configuration>
                </plugin>
                -->
                <plugin>
                    <groupId>org.apache.james</groupId>
                    <artifactId>maven-mailetdocs-plugin</artifactId>
                    <version>0.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
