<?xml version="1.0"?>
<!--
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>
	<modelVersion>4.0.0</modelVersion>

	<name>Jakarta Commons Net</name>
	<groupId>commons-net</groupId>
	<artifactId>commons-net</artifactId>
	<version>2.0.0-SNAPSHOT</version>
	<inceptionYear>1997</inceptionYear>
	<description>Jakarta Commons Net</description>

	<parent>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-parent</artifactId>
		<version>2-SNAPSHOT</version>
	</parent>

	<url>http://jakarta.apache.org/commons/net/</url>

	<organization>
		<name>The Apache Software Foundation</name>
		<url>http://jakarta.apache.org</url>
	</organization>

	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>/LICENSE.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<issueManagement>
		<url>https://issues.apache.org/jira/browse/NET</url>
	</issueManagement>

	<distributionManagement>
		<site>
			<id>taging</id>
			<name>Apache Website</name>
			<url>scp://people.apache.org/~rwinston/release/net/</url>
		</site>
	</distributionManagement>


	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<developers>
		<developer>
			<name>Jeffrey D. Brekke</name>
			<id>brekke</id>
			<email>Jeff.Brekke@qg.com</email>
			<organization>Quad/Graphics, Inc.</organization>
		</developer>
		<developer>
			<name>Steve Cohen</name>
			<id>scohen</id>
			<email>scohen@apache.org</email>
			<organization>javactivity.org</organization>
		</developer>
		<developer>
			<name>Bruno D'Avanzo</name>
			<id>brudav</id>
			<email>bruno.davanzo@hp.com</email>
			<organization>Hewlett-Packard</organization>
		</developer>
		<developer>
			<name>Daniel F. Savarese</name>
			<id>dfs</id>
			<email>dfs -> apache.org</email>
			<organization>
				&lt;a href="http://www.savarese.com/"&gt;Savarese Software Research&lt;/a&gt;
			</organization>
		</developer>
		<developer>
			<name>Rory Winston</name>
			<id>rwinston</id>
			<email>rwinston@apache.org</email>
			<organization></organization>
		</developer>
	</developers>

	<contributors>
		<contributor>
			<name>Rob Hasselbaum</name>
			<email>rhasselbaum -> alumni.ithaca.edu</email>
		</contributor>
		<contributor>
			<name>Mario Ivankovits</name>
			<email>mario@ops.co.at</email>
		</contributor>
		<contributor>
			<name>Tapan Karecha</name>
			<email>tapan@india.hp.com</email>
		</contributor>
		<contributor>
			<name>Winston Ojeda</name>
			<email>Winston.Ojeda@qg.com</email>
			<organization>Quad/Graphics, Inc.</organization>
		</contributor>
		<contributor>
			<name>Ted Wise</name>
			<email>ctwise@bellsouth.net</email>
		</contributor>
	</contributors>

	<scm>
		<connection>scm:svn:http://svn.apache.org/repos/asf/jakarta/commons/proper/net/trunk</connection>
		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/jakarta/commons/proper/net/trunk</developerConnection>
		<url>http://svn.apache.org/viewvc/jakarta/commons/proper/net/trunk</url>
	</scm>

	<build>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.0</version>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.2</version>
				<configuration>
					<excludes>
						<exclude>**/*FunctionalTest.java</exclude>
						<exclude>**/TestSetupParameters.java</exclude>
						<exclude>**/*POP3*.java</exclude>
					</excludes>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<descriptors>
						<descriptor>assembly-src.xml</descriptor>
						<descriptor>assembly-bin.xml</descriptor>
					</descriptors>
					<finalName>commons-net-${version}</finalName>
					<outputDirectory>target</outputDirectory>
					<workDirectory>target/assembly</workDirectory>
				</configuration>
			</plugin>


			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<phase>package</phase>
						<configuration>
							<tasks>
								<jar destfile="target/commons-net-ftp-${version}.jar">
									<fileset dir="target/classes" 
										includes="org/apache/commons/net/ftp/**,org/apache/commons/net/*,org/apache/commons/net/io/*,org/apache/commons/net/util/*"/>
									<metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>			
									<manifest>
										<attribute name="Extension-Name" value="org.apache.commons.net"/>
										<attribute name="Specification-Title" value="Jakarta Commons Net"/>
										<attribute name="Implementation-Title" value="Jakarta Commons Net"/>
										<attribute name="Implementation-Vendor" value="The Apache Software Foundation"/>
										<attribute name="Implementation-Version" value="2.0"/>
										<attribute name="Implementation-Vendor-Id" value="Apache"/>



									</manifest>
								</jar>
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

		</plugins>

		<resources>
			<resource>
				<directory>${basedir}</directory>
				<targetPath>META-INF</targetPath>
				<includes>
					<include>NOTICE.txt</include>
					<include>LICENSE.txt</include>
				</includes>
			</resource>
		</resources>

		<testResources>
			<testResource>
				<directory>${basedir}</directory>
				<includes>
					<include>**/*Test.java</include>
				</includes>
			</testResource>
		</testResources>

	</build>

	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-changes-plugin</artifactId>
				<configuration>
					<xmlPath>${basedir}/src/site/xdoc/changes.xml</xmlPath>
					<issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>
				</configuration>
				<reportSets>
					<reportSet>
						<reports>
							<report>changes-report</report>
							<report>jira-report</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
				</configuration>
			</plugin>

		</plugins>
	</reporting>

</project>

