<?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>69</version>
  </parent>

  <groupId>commons-validator</groupId>
  <artifactId>commons-validator</artifactId>
  <version>1.9.0-SNAPSHOT</version>
  <name>Apache Commons Validator</name>
  <description>
    Apache Commons Validator provides the building blocks for both client side validation and server side data validation.
    It may be used standalone or with a framework like Struts.
  </description>
  <url>http://commons.apache.org/proper/commons-validator/</url>
  <inceptionYear>2002</inceptionYear>

  <properties>
    <commons.componentid>validator</commons.componentid>
    <commons.module.name>org.apache.commons.validator</commons.module.name>
    <!-- Re-generate the download page using: mvn commons:download-page -->
    <commons.release.version>1.9.0</commons.release.version>
    <commons.release.next>1.9.1</commons.release.next>
    <commons.rc.version>RC1</commons.rc.version>
    <commons.release.desc>(requires JDK ${maven.compiler.target})</commons.release.desc>
    <commons.bc.version>1.8.0</commons.bc.version>
    <commons.jira.id>VALIDATOR</commons.jira.id>
    <commons.jira.pid>12310494</commons.jira.pid>
    <commons.encoding>UTF-8</commons.encoding>

    <commons.scmPubCheckoutDirectory>site-content</commons.scmPubCheckoutDirectory>
    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-validator</commons.scmPubUrl>

    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <project.build.outputTimestamp>2024-01-01T00:00:00Z</project.build.outputTimestamp>
    <commons.release.isDistModule>true</commons.release.isDistModule>
  </properties> 

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-validator</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-validator</developerConnection>
    <url>https://gitbox.apache.org/repos/asf/commons-validator</url>
  </scm>

  <issueManagement>
    <system>jira</system>
    <url>http://issues.apache.org/jira/browse/VALIDATOR</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-validator/</url>
    </site>
  </distributionManagement>

  <build>
    <defaultGoal>clean verify apache-rat:check japicmp:cmp checkstyle:check spotbugs:check javadoc:javadoc</defaultGoal>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.github.spotbugs</groupId>
          <artifactId>spotbugs-maven-plugin</artifactId>
          <configuration>
            <threshold>Normal</threshold>
            <effort>Default</effort>
            <excludeFilterFile>${basedir}/src/conf/spotbugs-exclude-filter.xml</excludeFilterFile>
         </configuration>
        </plugin>
      </plugins>
	</pluginManagement>
    <resources>
      <resource>
        <directory>${basedir}</directory>
        <targetPath>META-INF</targetPath>
        <includes>
          <include>NOTICE.txt</include>
          <include>LICENSE.txt</include>
        </includes>
       </resource>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>${basedir}/src/assembly/bin.xml</descriptor>
            <descriptor>${basedir}/src/assembly/src.xml</descriptor>
          </descriptors>
          <tarLongFileMode>gnu</tarLongFileMode>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <configuration>
          <ignorePathsToDelete>
            <ignorePathToDelete>javadocs</ignorePathToDelete>
          </ignorePathsToDelete>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <configLocation>${basedir}/src/conf/checkstyle.xml</configLocation>
          <!-- TODO <includeTestSourceDirectory>true</includeTestSourceDirectory> -->
          <!-- Needed to define config_loc -->
          <propertyExpansion>config_loc=${basedir}/src/conf</propertyExpansion>
          <enableRulesSummary>false</enableRulesSummary>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

  <dependencies>

    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.9.4</version>
    </dependency>

    <dependency>
      <groupId>commons-digester</groupId>
      <artifactId>commons-digester</artifactId>
      <version>2.1</version>
      <!-- exclude older version and use declared-only -->
      <exclusions>
        <exclusion>
          <groupId>commons-beanutils</groupId>
          <artifactId>commons-beanutils</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.3.1</version>
    </dependency>

    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2.2</version>
    </dependency>

    <!-- Needed for IBANValidatorTest -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-csv</artifactId>
      <version>1.10.0</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.junit.vintage</groupId>
      <artifactId>junit-vintage-engine</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <!-- For testing DomainValidatorStartup -->
      <groupId>org.bitstrings.test</groupId>
      <artifactId>junit-clptr</artifactId>
      <version>1.2.2</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <configLocation>${basedir}/src/conf/checkstyle.xml</configLocation>
          <!-- Needed to define config_loc -->
          <propertyExpansion>config_loc=${basedir}/src/conf</propertyExpansion>
          <enableRulesSummary>false</enableRulesSummary>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>checkstyle</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <artifactId>maven-pmd-plugin</artifactId>
        <configuration>
          <targetJdk>${maven.compiler.target}</targetJdk>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>pmd</report>
              <report>cpd</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>site-content/**</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id>setup-checkout</id>
      <activation>
        <file>
          <missing>site-content</missing>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
              <execution>
                <id>prepare-checkout</id>
                <phase>pre-site</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <exec executable="svn">
                      <arg line="checkout --depth immediates ${commons.scmPubUrl} ${commons.scmPubCheckoutDirectory}" />
                    </exec>

                    <exec executable="svn">
                      <arg line="update --set-depth exclude ${commons.scmPubCheckoutDirectory}/javadocs" />
                    </exec>

                    <pathconvert pathsep=" " property="dirs">
                      <dirset dir="${commons.scmPubCheckoutDirectory}" includes="*" />
                    </pathconvert>
                    <exec executable="svn">
                      <arg line="update --set-depth infinity ${dirs}" />
                    </exec>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>jdk9-cldr</id>
      <activation>
        <jdk>[1.9,)</jdk>
      </activation>
      <!--
       Temporary fix to allow tests to work under Java 9+, which changed to use CLDR names.
       This causes several Date/Time tests to fail, as some language strings have changed.
       e.g. German now uses "Dez." rather than "Dez" for the short version of "December"
       (see: TimeValidatorTest#testTimeZone)
       Is the test data wrong, or should the code still be able to parse "Dez"?
      -->
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <!--
                systemPropertyVariables are set too late in Surefire
                versions after 2.21.0 and before 3.0-M4 (but only on Windows!)
                Use the command-line instead to ensure the property is set early enough
              -->
              <argLine>-Djava.locale.providers=COMPAT,SPI</argLine>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <developers>
    <developer>
      <name>Don Brown</name>
      <id>mrdon</id>
      <email>mrdon@apache.org</email>
    </developer>
    <developer>
      <name>Martin Cooper</name>
      <id>martinc</id>
      <email>martinc@apache.org</email>
    </developer>
    <developer>
      <name>David Graham</name>
      <id>dgraham</id>
      <email>dgraham@apache.org</email>
    </developer>
    <developer>
      <name>Ted Husted</name>
      <id>husted</id>
      <email>husted@apache.org</email>
    </developer>
    <developer>
      <name>Rob Leland</name>
      <id>rleland</id>
      <email>rleland at apache.org</email>
    </developer>
    <developer>
      <name>Craig McClanahan</name>
      <id>craigmcc</id>
      <email>craigmcc@apache.org</email>
    </developer>
    <developer>
      <name>James Mitchell</name>
      <id>jmitchell</id>
      <email>jmitchell NOSPAM apache.org</email>
      <organization>EdgeTech, Inc</organization>
    </developer>
    <developer>
      <name>Niall Pemberton</name>
      <id>niallp</id>
    </developer>
    <developer>
      <name>James Turner</name>
      <id>turner</id>
      <email>turner@apache.org</email>
    </developer>
    <developer>
      <name>David Winterfeldt</name>
      <id>dwinterfeldt</id>
      <email>dwinterfeldt@apache.org</email>
    </developer>
    <developer>
      <name>Henri Yandell</name>
      <id>bayard</id>
    </developer>
    <developer>
      <name>Ben Speakmon</name>
      <id>bspeakmon</id>
    </developer>
    <developer>
      <name>Nick Burch</name>
      <id>nick</id>
    </developer>
    <developer>
      <name>SimoneTripodi</name>
      <id>simonetripodi</id>
    </developer>
    <developer>
      <name>Benedikt Ritter</name>
      <id>britter</id>
    </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>Makoto Uchino</name>
    </contributor>
  </contributors>

</project>
