<?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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-parent</artifactId>
        <version>53</version>
    </parent>

    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
    <version>3.9.0-SNAPSHOT</version>
    <name>Apache Commons Net</name>
    <!-- N.B. the description content is deliberately not indented ! to improve the layout of the Release Notes generated 
        by mvn changes:announcement-generate -->
    <description>
Apache Commons Net library contains a collection of network utilities and protocol implementations.
Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Telnet, Whois
    </description>
    <url>https://commons.apache.org/proper/commons-net/</url>
    <inceptionYear>2001</inceptionYear>

    <properties>
        <!-- Environment -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <commons.javadoc.java.link>${commons.javadoc7.java.link}</commons.javadoc.java.link>
        <commons.componentid>net</commons.componentid>
        <commons.module.name>org.apache.commons.net</commons.module.name>
        <commons.jira.id>NET</commons.jira.id>
        <commons.jira.pid>12310487</commons.jira.pid>

        <commons.scmPubCheckoutDirectory>site-content</commons.scmPubCheckoutDirectory>
        <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-net</commons.scmPubUrl>

        <!-- Current release -->
        <commons.release.version>3.9.0</commons.release.version>
        <commons.rc.version>RC1</commons.rc.version>
        <commons.release.desc>(Requires Java ${maven.compiler.target} or
            later)</commons.release.desc>

        <!-- Release plugin defines -->
        <commons.bc.version>3.8.0</commons.bc.version>
        <commons.release.isDistModule>true</commons.release.isDistModule>
        <commons.releaseManagerName>Gary Gregory</commons.releaseManagerName>
        <commons.releaseManagerKey>86fdc7e2a11262cb</commons.releaseManagerKey>
        <!-- Local version defines -->
        <commons.changes.onlyCurrentVersion>true</commons.changes.onlyCurrentVersion>
        <clirr.skip>true</clirr.skip>
        <commons.jacoco.version>0.8.7</commons.jacoco.version>
        <commons.japicmp.version>0.15.7</commons.japicmp.version>
        <commons.surefire.version>3.0.0-M5</commons.surefire.version>
        <!-- for debugging FTPSClientTest -->
        <commons.net.trace_calls>false</commons.net.trace_calls>
        <commons.net.add_listener>false</commons.net.add_listener>
    </properties>

    <scm>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-net</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-net</developerConnection>
        <url>https://gitbox.apache.org/repos/asf/commons-net</url>
    </scm>
    <issueManagement>
        <system>jira</system>
        <url>https://issues.apache.org/jira/browse/NET</url>
    </issueManagement>

    <distributionManagement>
        <site>
            <id>apache.website</id>
            <name>Apache Commons Site</name>
            <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-net/</url>
        </site>
    </distributionManagement>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.ftpserver</groupId>
            <artifactId>ftpserver-core</artifactId>
            <version>1.2.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <defaultGoal>clean apache-rat:check javadoc:javadoc checkstyle:check package japicmp:cmp</defaultGoal>
        <pluginManagement>
            <plugins>
                <!-- Allow CLI usage -->
                <plugin>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs-maven-plugin</artifactId>
                    <version>${commons.spotbugs.version}</version>
                    <configuration>
                        <excludeFilterFile>findbugs-exclude-filter.xml</excludeFilterFile>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${commons.compiler.version}</version>
                    <configuration>
                        <!-- Fix incremental compiler bug, see https://issues.apache.org/jira/browse/MCOMPILER-205 etc. -->
                        <excludes>
                            <exclude>**/package-info.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${commons.checkstyle-plugin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>

            <!-- Exclude examples from binary jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/examples/**</exclude>
                    </excludes>
                    <archive combine.children="append">
                        <manifestEntries>
                            <Automatic-Module-Name>${commons.module.name}</Automatic-Module-Name>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

            <!-- Exclude examples from source jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/examples/**</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/*FunctionalTest.java</exclude>
                        <exclude>**/POP3*Test.java</exclude>
                    </excludes>
                    <environmentVariables>
                    <TRACE_CALLS>${commons.net.trace_calls}</TRACE_CALLS>
                    <ADD_LISTENER>${commons.net.add_listener}</ADD_LISTENER>
                    </environmentVariables>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>src/assembly/bin.xml</descriptor>
                        <descriptor>src/assembly/src.xml</descriptor>
                    </descriptors>
                    <tarLongFileMode>gnu</tarLongFileMode>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <configuration>
                            <target>
                                <jar destfile="target/commons-net-ftp-${project.version}.jar">
                                    <metainf dir="${basedir}" includes="NOTICE.txt,LICENSE.txt" />
                                    <manifest>
                                        <attribute name="Extension-Name" value="org.apache.commons.net" />
                                        <attribute name="Specification-Title" value="${project.name}" />
                                        <attribute name="Implementation-Title" value="${project.name}" />
                                        <attribute name="Implementation-Vendor"
                                            value="${project.organization.name}" />
                                        <attribute name="Implementation-Version" value="${project.version}" />
                                        <attribute name="Implementation-Vendor-Id" value="org.apache" />
                                        <attribute name="Implementation-Build" value="${implementation.build}" />
                                        <attribute name="X-Compile-Source-JDK"
                                            value="${maven.compiler.source}" />
                                        <attribute name="X-Compile-Target-JDK"
                                            value="${maven.compiler.target}" />
                                    </manifest>
                                    <fileset dir="target/classes"
                                        includes="org/apache/commons/net/ftp/**,org/apache/commons/net/*,org/apache/commons/net/io/*,org/apache/commons/net/util/*" />
                                </jar>
                                <!-- Create the binary examples jar, which will be added to the binary zip/tgz, but not deployed 
                                    independently to Maven -->
                                <jar destfile="target/commons-net-examples-${project.version}.jar">
                                    <metainf dir="${basedir}" includes="NOTICE.txt,LICENSE.txt" />
                                    <manifest>
                                        <attribute name="Extension-Name" value="org.apache.commons.net" />
                                        <attribute name="Specification-Title" value="${project.name}" />
                                        <attribute name="Implementation-Title" value="${project.name}" />
                                        <attribute name="Implementation-Vendor"
                                            value="${project.organization.name}" />
                                        <attribute name="Implementation-Version" value="${project.version}" />
                                        <attribute name="Implementation-Vendor-Id" value="org.apache" />
                                        <attribute name="Implementation-Build" value="${implementation.build}" />
                                        <attribute name="X-Compile-Source-JDK"
                                            value="${maven.compiler.source}" />
                                        <attribute name="X-Compile-Target-JDK"
                                            value="${maven.compiler.target}" />
                                        <!-- Helper application -->
                                        <attribute name="Main-Class"
                                            value="org/apache/commons/net/examples/Main" />
                                        <!-- Allow java -jar examples.jar to work -->
                                        <attribute name="Class-Path"
                                            value="commons-net-${project.version}.jar" />
                                    </manifest>
                                    <fileset dir="target/classes" includes="**/examples/**" />
                                </jar>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Attaches the commons-net-ftp and examples JARs to the Maven lifecycle to ensure they will be signed and 
                deployed as normal -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-artifacts</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attach-artifact</goal>
                        </goals>
                        <configuration>
                            <artifacts>
                                <artifact>
                                    <file>target/commons-net-ftp-${project.version}.jar</file>
                                    <type>jar</type>
                                    <classifier>ftp</classifier>
                                </artifact>
                                <artifact>
                                    <file>target/commons-net-examples-${project.version}.jar</file>
                                    <type>jar</type>
                                    <classifier>examples</classifier>
                                </artifact>
                            </artifacts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- Exclude examples from Javadoc jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <excludePackageNames>*.examples.*</excludePackageNames>
                </configuration>
            </plugin>

            <!-- Copy the examples sources -->
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>pre-site</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target/site/examples</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/java/org/apache/commons/net/examples</directory>
                                    <excludes>
                                        <exclude>**/Main.java</exclude>
                                    </excludes>
                                    <filtering>false</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-scm-publish-plugin</artifactId>
                <configuration>
                    <ignorePathsToDelete>
                        <ignorePathToDelete>javadocs</ignorePathToDelete>
                    </ignorePathsToDelete>
                </configuration>
            </plugin>

            <!-- drop examples from CLI invocations -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>clirr-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/examples/**</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!-- Allow exec:java to launch examples from the classpath For example: mvn -q exec:java -Dexec.arguments=FTPClientExample,-A,-l,hostname -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>org.apache.commons.net.examples.Main</mainClass>
                </configuration>
            </plugin>

            <!-- Allow checkstyle use from command line -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${commons.checkstyle-plugin.version}</version>
                <configuration>
                    <configLocation>${basedir}/checkstyle.xml</configLocation>
                    <!-- Needed to define config_loc for use by Eclipse -->
                    <propertyExpansion>config_loc=${basedir}</propertyExpansion>
                    <suppressionsLocation>${basedir}/checkstyle-suppressions.xml</suppressionsLocation>
                    <enableRulesSummary>false</enableRulesSummary>
                </configuration>
            </plugin>
        </plugins>

    </build>

    <reporting>
        <plugins>

            <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
                <version>${commons.spotbugs.version}</version>
                <configuration>
                    <excludeFilterFile>findbugs-exclude-filter.xml</excludeFilterFile>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>clirr-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/examples/**</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <excludePackageNames>*.examples.*</excludePackageNames>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${commons.checkstyle-plugin.version}</version>
                <configuration>
                    <configLocation>${basedir}/checkstyle.xml</configLocation>
                    <!-- Needed to define config_loc for use by Eclipse -->
                    <propertyExpansion>config_loc=${basedir}</propertyExpansion>
                    <suppressionsLocation>${basedir}/checkstyle-suppressions.xml</suppressionsLocation>
                    <enableRulesSummary>false</enableRulesSummary>
                </configuration>
            </plugin>

        </plugins>
    </reporting>

    <profiles>
        <profile>
            <id>slf4j-simple</id>
            <properties>
                <commons.net.trace_calls>true</commons.net.trace_calls>
                <commons.net.add_listener>true</commons.net.add_listener>
            </properties>
            <dependencies>
                <!-- adds logging for MINA ftpserver as used by FTPSClientTest -->
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-simple</artifactId>
                    <version>1.7.21</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

    <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 />
        </developer>
        <developer>
            <name>Rory Winston</name>
            <email>rwinston@checkfree.com</email>
            <organization />
        </developer>
        <developer>
          <id>ggregory</id>
          <name>Gary Gregory</name>
          <email>ggregory at apache.org</email>
          <url>https://www.garygregory.com</url>
          <organization>The Apache Software Foundation</organization>
          <organizationUrl>https://www.apache.org/</organizationUrl>      
          <roles>
            <role>PMC Member</role>
          </roles>
          <timezone>America/New_York</timezone>
          <properties>
            <picUrl>https://people.apache.org/~ggregory/img/garydgregory80.png</picUrl>
          </properties>
        </developer>
    </developers>

    <contributors>
        <contributor>
            <name>Henrik Sorensen</name>
            <email>henrik.sorensen@balcab.ch</email>
        </contributor>
        <contributor>
            <name>Jeff Nadler</name>
            <email>jnadler@srcginc.com</email>
        </contributor>
        <contributor>
            <name>William Noto</name>
            <email>wnoto@openfinance.com</email>
        </contributor>
        <contributor>
            <name>Stephane ESTE-GRACIAS</name>
            <email>sestegra@free.fr</email>
        </contributor>
        <contributor>
            <name>Dan Armbrust</name>
            <email>daniel.armbrust.list@gmail.com</email>
        </contributor>
        <contributor>
            <name>Yuval Kashtan</name>
        </contributor>
        <contributor>
            <name>Joseph Hindsley</name>
        </contributor>
        <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>Naz Irizarry</name>
            <organization>MITRE Corp</organization>
        </contributor>
        <contributor>
            <name>Tapan Karecha</name>
            <email>tapan@india.hp.com</email>
        </contributor>
        <contributor>
            <name>Jason Mathews</name>
            <organization>MITRE Corp</organization>
        </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>
        <contributor>
            <name>Bogdan Drozdowski</name>
            <email>bogdandr # op dot pl</email>
        </contributor>
    </contributors>

</project>
