<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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>

  <groupId>org.openrefine</groupId>
  <artifactId>openrefine</artifactId>
  <packaging>pom</packaging>
  <version>3.9.5</version>

  <name>OpenRefine</name>
  <description>OpenRefine is a free, open source power tool for working with messy data and improving it</description>
  <url>http://openrefine.org/</url>
  <inceptionYear>2010</inceptionYear>
  <organization>
    <name>Code for Science &amp; Society Inc.</name>
    <url>https://codeforscience.org/</url>
  </organization>
  <licenses>
    <license>
      <name>BSD-3-Clause</name>
      <url>https://raw.githubusercontent.com/OpenRefine/OpenRefine/master/LICENSE.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <mailingLists>
    <mailingList>
      <name>Dev</name>
        <post>openrefine+dev@discoursemail.com</post>
        <archive>https://forum.openrefine.org/c/8</archive>
     </mailingList>
     <mailingList>
       <name>Users</name>
       <post>openrefine+support@discoursemail.com</post>
       <archive>https://forum.openrefine.org/c/support/12</archive>
     </mailingList>
  </mailingLists>
  <scm>
      <connection>scm:git:git://github.com//OpenRefine/OpenRefine.git</connection>
      <developerConnection>scm:git:https://github.com/OpenRefine/OpenRefine</developerConnection>
      <url>https://github.com/OpenRefine/OpenRefine.git</url>
      <tag>HEAD</tag>
  </scm>
  <issueManagement>
    <system>GitHub Issues</system>
    <url>https://github.com/openrefine/openrefine/issues</url>
  </issueManagement>

  <developers>
    <developer>
      <id>contributors</id>
      <name>OpenRefine Contributors</name>
      <url>https://github.com/OpenRefine/OpenRefine/graphs/contributors</url>
      <roles>
        <role>Contributor</role>
      </roles>  
    </developer>
  </developers>

  <modules>
        <module>modules/core</module>
        <module>modules/grel</module>
        <module>main</module>
        <module>server</module>
        <module>extensions</module>
        <module>packaging</module>
        <module>benchmark</module>
  </modules>


  <properties>
    <java.minversion>11</java.minversion>
    <java.maxversion>21</java.maxversion>
    <jee.path>/</jee.path>
    <jee.port>3333</jee.port>
    <refine.data>/tmp/refine</refine.data>
    <surefireArgs/>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- dependency versions -->
    <jackson.version>2.18.2</jackson.version>
    <servlet-api.version>4.0.1</servlet-api.version>
    <butterfly.version>1.2.6</butterfly.version>
    <slf4j.version>2.0.16</slf4j.version>
    <log4j.version>2.24.3</log4j.version>
    <jetty.version>10.0.16</jetty.version>
    <okhttp.version>5.1.0</okhttp.version>
    <jena.version>4.10.0</jena.version>
    <poi.version>5.4.0</poi.version>
    <commons-lang3.version>3.17.0</commons-lang3.version>
    <commons-fileupload.version>1.5</commons-fileupload.version>
    <commons-collections.version>3.2.2</commons-collections.version>
    <commons-text.version>1.13.0</commons-text.version>
    <commons-validator.version>1.9.0</commons-validator.version>
    <org-jvnet-localizer.version>1.31</org-jvnet-localizer.version>
    <!-- v1.15 of commons-codec is needed for Jena 3.14+ - copied from org.apache.jena:jena:pom -->
    <commons-codec.version>1.17.2</commons-codec.version>
    <commons-compress.version>1.27.1</commons-compress.version>
    <velocity.version>2.4.1</velocity.version>
    <marc4j.version>2.9.6</marc4j.version>
    <jsoup.version>1.18.3</jsoup.version>
    <odfdom-java.version>0.12.0</odfdom-java.version> <!-- do not update to 0.10.0, see issue #4397 -->
    <vicino.version>1.2.1</vicino.version>
    <clojure.version>1.12.0</clojure.version>
    <httpclient5.version>5.4.1</httpclient5.version>
    <httpcore5.version>5.3.2</httpcore5.version>
    <univocity-csv.version>2.9.1</univocity-csv.version>
    <swc-parser-lazy.version>3.1.9</swc-parser-lazy.version>
    <commons-io.version>2.18.0</commons-io.version>
    <guava.version>33.4.0-jre</guava.version>
    <jaxb-api.version>2.3.1</jaxb-api.version>
    <juniversalchardet.version>2.5.0</juniversalchardet.version>
    <testng.version>7.10.2</testng.version>
    <httpmime.version>4.5.14</httpmime.version>
    <owasp-encoder.version>1.3.1</owasp-encoder.version>
    <jasypt.version>1.9.3</jasypt.version>
    <mockito.version>5.15.2</mockito.version>

    <!-- plugin versions -->
    <build-helper-maven-plugin.version>3.6.0</build-helper-maven-plugin.version>
    <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
    <maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
    <exec-maven-plugin.version>3.5.0</exec-maven-plugin.version>
    <maven-dependency-plugin.version>3.8.1</maven-dependency-plugin.version>
    <jacoco-maven-plugin.version>0.8.12</jacoco-maven-plugin.version>
    <surefire.version>3.5.2</surefire.version>
    <maven-jar-plugin.version>3.4.2</maven-jar-plugin.version>
    <maven-clean-plugin.version>3.4.0</maven-clean-plugin.version>
    <git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version>
    <maven-deploy-plugin.version>3.1.3</maven-deploy-plugin.version>
    <license-plugin.version>2.5.0</license-plugin.version>
    <org-jvnet-localizer-plugin.version>1.31</org-jvnet-localizer-plugin.version>
  </properties>


  <build>
    <!-- It is nice for "mvn" with no arguments to do a reasonable default. -->
    <defaultGoal>install</defaultGoal>

    <finalName>openrefine</finalName>
    <resources>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler-plugin.version}</version>
        <configuration>
          <release>${java.minversion}</release>
          <encoding>UTF-8</encoding>
          <showDeprecation>false</showDeprecation>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
	<version>${maven-resources-plugin.version}</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
	<version>${exec-maven-plugin.version}</version>
        <configuration>
          <skip>true</skip>
          <mainClass>none</mainClass>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
	<version>${maven-dependency-plugin.version}</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
          <argLine>@{surefireArgs} -Dfile.encoding=cp1252 -Duser.language=fr -Duser.region=FR</argLine>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco-maven-plugin.version}</version>
        <configuration>
          <skip>${skipTests}</skip>
          <excludes>
            <exclude>org/openrefine/messages/**/*</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <id>prepare-agent</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <phase>process-test-resources</phase>
            <configuration>
              <destFile>${project.build.directory}/report/${project.name}.exec</destFile>
              <propertyName>surefireArgs</propertyName>
            </configuration>
          </execution>
          <execution>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
            <configuration>
              <dataFile>${project.build.directory}/report/${project.name}.exec</dataFile>
              <outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>merge</id>
            <goals>
              <goal>merge</goal>
            </goals>
            <phase>test</phase>
            <configuration>
              <skip>${skipTests}</skip>
              <destFile>${project.build.directory}/report/jacoco-merged.exec</destFile>
              <fileSets>
                <fileSet>
                  <directory>main/target/report</directory>
                  <includes>
                    <include>*.exec</include>
                  </includes>
                </fileSet>
                <fileSet>
                  <directory>extensions/target/report</directory>
                  <includes>
                    <include>*.exec</include>
                  </includes>
                </fileSet>
              </fileSets>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- Plugin to generate release source -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.3.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- Plugin for creating Javadocs; goal for preparing docs for upload to github: javadoc:aggregate -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.11.2</version>
        <configuration>
            <bottom>
                    <![CDATA[Copyright &#169; {inceptionYear}&#x2013;{currentYear} {organizationName}. Generated from source code published under the BSD Clause-3 license. For more information, see the <a href="https://openrefine.org">OpenRefine website</a>]]></bottom>
            <source>11</source>
        </configuration>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>net.revelc.code.formatter</groupId>
        <artifactId>formatter-maven-plugin</artifactId>
        <version>2.17.1</version>
        <configuration>
          <configFile>${maven.multiModuleProjectDirectory}/IDEs/eclipse/Refine.style.xml</configFile>
          <excludes> <!-- file should not be linted because it was copied from a dependency (sigh) -->
            <exclude>**/Metaphone3.java</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>net.revelc.code</groupId>
        <artifactId>impsort-maven-plugin</artifactId>
        <version>1.9.0</version>
        <configuration>
          <groups>java.,javax.,*,com.google.refine,org.openrefine</groups>
          <staticGroups>java,*</staticGroups>
          <removeUnused>true</removeUnused>
        </configuration>
        <executions>
          <execution>
            <id>sort-imports</id>
            <goals>
              <goal>sort</goal><!-- runs at process-sources phase by default -->
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.10</version>
        <configuration>
          <workspaceCodeStylesURL>${maven.multiModuleProjectDirectory}/IDEs/eclipse/Refine.style.xml</workspaceCodeStylesURL>
        </configuration>
      </plugin>
      <plugin>
        <!-- Signature -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>3.2.7</version>
        <executions>
            <execution>
                <id>sign-artifacts</id>
                <phase>deploy</phase>
                <goals>
                    <goal>sign</goal>
                </goals>
            </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- Staging plugin -->
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>nexus-staging-maven-plugin</artifactId>
        <version>1.7.0</version>
        <extensions>true</extensions>
        <configuration>
          <serverId>ossrh-staging-api</serverId>
          <nexusUrl>https://ossrh-staging-api.central.sonatype.com</nexusUrl>
          <autoReleaseAfterClose>true</autoReleaseAfterClose>
        </configuration>
      </plugin>
        <plugin>
            <groupId>org.jvnet.localizer</groupId>
            <artifactId>localizer-maven-plugin</artifactId>
            <version>${org-jvnet-localizer-plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
  </build>

  <dependencies>
    <!-- dependencies are stored in the relevant submodules:
          see main/pom.xml, server/pom.xml and each extension.
    -->
      <dependency>
          <groupId>org.jvnet.localizer</groupId>
          <artifactId>localizer</artifactId>
          <version>${org-jvnet-localizer.version}</version>
      </dependency>
  </dependencies>

  <!-- enabled to access our snapshots of Wikidata-Toolkit -->
  <repositories>
    <repository>
      <id>snapshots</id>
      <url>https://central.sonatype.com/repository/maven-snapshots/</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
      <repository>
          <id>jenkins-repo</id>
          <url>https://repo.jenkins-ci.org/releases/</url>
      </repository>
  </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>jenkins-repo</id>
            <url>https://repo.jenkins-ci.org/releases/</url>
        </pluginRepository>
    </pluginRepositories>

  <!-- Locations of the artifacts published -->
  <distributionManagement>
     <snapshotRepository>
       <id>ossrh-staging-api</id>
       <url>https://central.sonatype.com/repository/maven-snapshots/</url>
     </snapshotRepository>
     <repository>
       <id>ossrh-staging-api</id>
       <url>https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/</url>
     </repository>
  </distributionManagement>

</project>
