<?xml version="1.0" encoding="UTF-8"?>
<!-- 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/xsd/maven-4.0.0.xsd">
	<parent>
		<artifactId>ftpserver-parent</artifactId>
		<groupId>org.apache.ftpserver</groupId>
		<version>1.1.3-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.apache.ftpserver</groupId>
	<artifactId>ftpserver</artifactId>
	<packaging>pom</packaging>
	<name>Apache FtpServer</name>
	<version>1.1.3-SNAPSHOT</version>

	<scm>
		<connection>scm:svn:http://svn.apache.org/repos/asf/mina/ftpserver/trunk/distribution</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/mina/ftpserver/trunk/distribution</developerConnection>
		<url>http://svn.apache.org/viewvc/mina/ftpserver/trunk/distribution</url>
		<tag>HEAD</tag>
	</scm>

	<build>
		<finalName>apache-${project.artifactId}-${project.version}</finalName>
		<plugins>
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.2-beta-2</version>
				<executions>
					<execution>
						<id>bin</id>
						<phase>package</phase>
						<goals>
							<goal>attached</goal>
						</goals>
						<configuration>
							<descriptors>
								<descriptor>src/main/assemblies/bin.xml</descriptor>
							</descriptors>
							<tarLongFileMode>gnu</tarLongFileMode>
						</configuration>
					</execution>
					<execution>
						<id>src</id>
						<phase>package</phase>
						<goals>
							<goal>attached</goal>
						</goals>
						<configuration>
							<descriptors>
								<descriptor>src/main/assemblies/src.xml</descriptor>
							</descriptors>
							<tarLongFileMode>gnu</tarLongFileMode>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>rat-maven-plugin</artifactId>
				<version>1.0-alpha-3</version>
				<configuration>
					<excludes>
						<exclude>LICENSE.slf4j.txt</exclude>
						<exclude>LICENSE.springframework.txt</exclude>
					</excludes>
				</configuration>
			</plugin>

		</plugins>
	</build>

	<dependencies>
		<dependency>
			<groupId>org.apache.ftpserver</groupId>
			<artifactId>ftplet-api</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.ftpserver</groupId>
			<artifactId>ftpserver-core</artifactId>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>

		<!-- Use as Spring uses JCL -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
		</dependency>
	</dependencies>

	<profiles>
		<profile>
			<id>release</id>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-antrun-plugin</artifactId>
						<version>1.1</version>
						<executions>
							<execution>
								<id>download-docs</id>
								<phase>process-resources</phase>
								<goals>
									<goal>run</goal>
								</goals>
								<configuration>
									<tasks>
										<echo>Downloading Manual</echo>
										<mkdir dir="${project.build.directory}/site" />
										<get src="http://people.apache.org/~ngn/ftpserver/docs/ftpserver.zip" dest="${project.build.directory}/${project.artifactId}-docs.zip" />
										<unzip src="${project.build.directory}/${project.artifactId}-docs.zip" dest="${project.build.directory}/docs" />
									</tasks>
								</configuration>
							</execution>

							<execution>
								<id>copy-javadocs-docs</id>
								<phase>process-resources</phase>
								<goals>
									<goal>run</goal>
								</goals>
								<configuration>
									<tasks>
										<echo>Copying Javadocs</echo>
										<mkdir dir="${project.build.directory}/api" />
										<copy todir="${project.build.directory}/api">
											<fileset dir="../target/site/apidocs" />
										</copy>
									</tasks>
								</configuration>
							</execution>

						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
