<?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>70</version>
  </parent>

  <groupId>commons-validator</groupId>
  <artifactId>commons-validator</artifactId>
  <version>1.9.1-SNAPSHOT</version>
  <name>Apache Commons Validator</name>
  <description>
    Apache Commons Validator provides the building blocks for both client-side 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-05-28T23:13:31Z</project.build.outputTimestamp>
    <commons.release.isDistModule>true</commons.release.isDistModule>
    <!-- JaCoCo: Don't make code coverage worse than: -->
    <commons.jacoco.haltOnFailure>true</commons.jacoco.haltOnFailure>
    <commons.jacoco.classRatio>0.97</commons.jacoco.classRatio>
    <commons.jacoco.instructionRatio>0.87</commons.jacoco.instructionRatio>
    <commons.jacoco.methodRatio>0.81</commons.jacoco.methodRatio>
    <commons.jacoco.branchRatio>0.74</commons.jacoco.branchRatio>
    <commons.jacoco.lineRatio>0.78</commons.jacoco.lineRatio>    
    <commons.jacoco.complexityRatio>0.71</commons.jacoco.complexityRatio>
  </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 pmd: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>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
        </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.2</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.11.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>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.14.0</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>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
        </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
                
                Use ${argLine} to get JaCoCo to work properly.
              -->
              <argLine>${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>
