<!--
  Licensed to the Technische Universität Darmstadt under one
  or more contributor license agreements. See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership. The Technische Universität Darmstadt
  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.

  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.dkpro</groupId>
    <artifactId>dkpro-parent-pom</artifactId>
    <version>35</version>
  </parent>
  <packaging>pom</packaging>
  <name>JWPL</name>
  <description>A free, Java-based application programming interface that allows to access all information contained in Wikipedia.</description>
  <groupId>org.dkpro.jwpl</groupId>
  <artifactId>dkpro-jwpl</artifactId>
  <version>2.0.2</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.target>17</maven.compiler.target>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.release>17</maven.compiler.release>

    <fastutil.version>8.5.18</fastutil.version>
    <fau.ptk.version>3.0.8</fau.ptk.version>
    <fau.utils.version>3.0.8</fau.utils.version>
    <org.sweble.wikitext.version>4.0.1</org.sweble.wikitext.version>

    <commons.codec.version>1.21.0</commons.codec.version>
    <commons.compress.version>1.28.0</commons.compress.version>
    <commons.io.version>2.20.0</commons.io.version>
    <commons.lang3.version>3.20.0</commons.lang3.version>
    <commons.logging.version>1.3.5</commons.logging.version>
    <!--
      Required for 7z support in commons-compress,  see:
      https://commons.apache.org/proper/commons-compress/limitations.html
    -->  
    <xz.version>1.11</xz.version>
    
    <!-- DB specific dependency versions -->
    <hibernate.version>6.6.40.Final</hibernate.version>
    <mysql.version>8.0.30</mysql.version>
    <mariadb.version>3.5.7</mariadb.version>
    <postgresql.version>42.6.0</postgresql.version>
    <hsqldb.version>2.7.4</hsqldb.version>

    <!-- Logger specific dependency versions -->
    <slf4j.version>2.0.17</slf4j.version>
    <log4j2.version>2.25.3</log4j2.version>

    <!-- Test specific dependencies -->
    <junit.jupiter.version>6.0.2</junit.jupiter.version>

    <!-- Maven plugin versions -->
    <maven.failsafe.plugin>3.5.4</maven.failsafe.plugin>
    <maven.build.helper.plugin>3.6.1</maven.build.helper.plugin>
  </properties>

  <scm>
    <connection>scm:git:https://github.com/dkpro/dkpro-jwpl</connection>
    <developerConnection>scm:git:https://github.com/dkpro/dkpro-jwpl</developerConnection>
    <url>https://github.com/dkpro/dkpro-jwpl</url>
    <tag>dkpro-jwpl-2.0.2</tag>
  </scm>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <organization>
    <name>Ubiquitous Knowledge Processing (UKP) Lab, Technische Universität Darmstadt</name>
    <url>https://www.ukp.tu-darmstadt.de/</url>
  </organization>

  <url>https://dkpro.github.io/dkpro-jwpl</url>

  <developers>
    <developer>
      <id>oliver.ferschke</id>
      <name>Oliver Ferschke</name>
      <email>oliver.ferschke@googlemail.com</email>
    </developer>
    <developer>
      <id>torsten.zesch</id>
      <name>Torsten Zesch</name>
      <email>torsten.zesch@googlemail.com</email>
    </developer>
    <developer>
      <id>richard.eckart</id>
      <name>Richard Eckart de Castilho</name>
      <email>richard.eckart@googlemail.com</email>
    </developer>
  </developers>
  
  <dependencies>
    <!-- Common test dependencies -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j2-impl</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-params</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hsqldb</groupId>
      <artifactId>hsqldb</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>${junit.jupiter.version}</version>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <version>${junit.jupiter.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j2-impl</artifactId>
        <version>${log4j2.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j2.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.persistence</groupId>
        <artifactId>jakarta.persistence-api</artifactId>
        <version>3.1.0</version>
      </dependency>
      <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>4.0.4</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate.orm</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>4.0.6</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>4.0.6</version>
      </dependency>
      <dependency>
        <groupId>org.jgrapht</groupId>
        <artifactId>jgrapht-core</artifactId>
        <version>1.5.2</version>
      </dependency>
      <dependency>
        <groupId>com.neovisionaries</groupId>
        <artifactId>nv-i18n</artifactId>
        <version>1.29</version>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <version>${mariadb.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>${hsqldb.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.wikimedia</groupId>
        <artifactId>mwdumper</artifactId>
        <version>1.16-ukp-2</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons.codec.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>${commons.compress.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons.lang3.version}</version>
      </dependency>
      <dependency>
        <groupId>it.unimi.dsi</groupId>
        <artifactId>fastutil-core</artifactId>
        <version>${fastutil.version}</version>
      </dependency>
      <dependency>
        <groupId>io.github.rzo1.org.sweble.wikitext</groupId>
        <artifactId>swc-parser-lazy</artifactId>
        <version>${org.sweble.wikitext.version}</version>
      </dependency>
      <dependency>
        <groupId>io.github.rzo1.org.sweble.wikitext</groupId>
        <artifactId>swc-engine</artifactId>
        <version>${org.sweble.wikitext.version}</version>
      </dependency>
      <dependency>
        <groupId>io.github.rzo1.org.sweble.wom3</groupId>
        <artifactId>sweble-wom3-parent</artifactId>
        <version>${org.sweble.wikitext.version}</version>
      </dependency>
      <dependency>
        <groupId>de.fau.cs.osr.ptk</groupId>
        <artifactId>ptk-common</artifactId>
        <version>${fau.ptk.version}</version>
      </dependency>
      <dependency>
        <groupId>de.fau.cs.osr.utils</groupId>
        <artifactId>utils</artifactId>
        <version>${fau.utils.version}</version>
      </dependency>
      <dependency>
        <groupId>com.googlecode.java-diff-utils</groupId>
        <artifactId>diffutils</artifactId>
        <version>1.2.1</version>
      </dependency>
      <dependency>
        <groupId>xtc</groupId>
        <artifactId>rats-runtime</artifactId>
        <version>2.4.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <modules>
    <module>dkpro-jwpl-build</module>
    <module>dkpro-jwpl-api</module>
    <module>dkpro-jwpl-datamachine</module>
    <module>dkpro-jwpl-timemachine</module>
    <module>dkpro-jwpl-wikimachine</module>
    <module>dkpro-jwpl-revisionmachine</module>
    <module>dkpro-jwpl-mwdumper</module>
    <module>dkpro-jwpl-util</module>
    <module>dkpro-jwpl-parser</module>
    <module>dkpro-jwpl-tutorial</module>
  </modules>

  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/dkpro/dkpro-jwpl/issues</url>
  </issueManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>default</id>
            <phase>verify</phase>
            <goals>
              <goal>analyze-only</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <failOnWarning>true</failOnWarning>
          <ignoredUnusedDeclaredDependencies combine.children="append">
            <!--
              - Logging is used via reflection and cannot be detected by Maven
            -->
            <dependency>org.apache.logging.log4j:log4j-slf4j2-impl</dependency>
            <dependency>org.apache.logging.log4j:log4j-core</dependency>
            <dependency>org.slf4j:log4j-over-slf4j</dependency>
            <!--
              - JAXB is used via reflection and cannot be detected by Maven
            -->
            <dependency>jakarta.xml.bind:jakarta.xml.bind-api</dependency>
            <dependency>org.glassfish.jaxb</dependency>
            <!--
              - org tukaani.xz is required for 7z support via commons-compress,
                in runtime scope and thus not detected as strictly required,
                see: https://commons.apache.org/proper/commons-compress/limitations.html
            -->
            <dependency>org.tukaani:xz</dependency>
            <!--
              - Common test dependencies
            -->
            <dependency>org.hsqldb:hsqldb</dependency>
            <dependency>org.mariadb.jdbc:mariadb-java-client</dependency>
            <dependency>org.junit.jupiter:*</dependency>
            <dependency>org.junit.platform:*</dependency>
            <dependency>org.assertj:*</dependency>
            <dependency>org.mockito:*</dependency>
            <dependency>org.xmlunit:*</dependency>
            <dependency>org.awaitility:awaitility</dependency>
          </ignoredUnusedDeclaredDependencies>
        </configuration>
      </plugin>
    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>2.21.0</version>
          <configuration>
            <rulesUri>file:${session.executionRootDirectory}/dkpro-jwpl-build/src/main/resources/dkpro-jwpl/version-rules.xml</rulesUri>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.dkpro.jwpl</groupId>
              <artifactId>dkpro-jwpl-build</artifactId>
              <version>${project.version}</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>checkstyle</id>
      <activation>
        <file>
          <exists>src</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
          </plugin>
        </plugins>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-checkstyle-plugin</artifactId>
              <version>3.6.0</version>
              <inherited>true</inherited>
              <dependencies>
                <dependency>
                  <groupId>org.dkpro.jwpl</groupId>
                  <artifactId>dkpro-jwpl-build</artifactId>
                  <version>${project.version}</version>
                </dependency>
                <dependency>
                  <groupId>com.puppycrawl.tools</groupId>
                  <artifactId>checkstyle</artifactId>
                  <version>12.3.0</version>
                </dependency>
              </dependencies>
              <configuration>
                <!-- See: https://github.com/m2e-code-quality/m2e-code-quality/issues/117#issuecomment-380022879 -->
                <sourceDirectories>${project.compileSourceRoots}</sourceDirectories>
                <testSourceDirectories>${project.testCompileSourceRoots}</testSourceDirectories>
                <configLocation>dkpro-jwpl/checkstyle.xml</configLocation>
                <propertyExpansion>basedir=${project.basedir}</propertyExpansion>
                <consoleOutput>true</consoleOutput>
                <failOnViolation>true</failOnViolation>
                <includeTestSourceDirectory>true</includeTestSourceDirectory>
                <includeResources>false</includeResources>
                <includeTestResources>false</includeTestResources>
                <logViolationsToConsole>true</logViolationsToConsole>
                <maxAllowedViolations>0</maxAllowedViolations>
                <violationSeverity>error</violationSeverity>
              </configuration>
              <executions>
                <execution>
                  <id>checkstyle-check</id>
                  <phase>verify</phase>
                  <goals>
                    <goal>check</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    
    <profile>
      <id>rat-check</id>
      <activation>
        <file>
          <exists>.activate_rat-check</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <id>default</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <inputExcludes>
                    <!-- release generated artifact -->
                    <inputExclude>release.properties</inputExclude>
                    <inputExclude>CHANGES</inputExclude>
                    <inputExclude>CONTRIBUTING.md</inputExclude>
                    <inputExclude>CONTRIBUTORS.txt</inputExclude>
                    <inputExclude>LICENSE.txt</inputExclude>
                    <inputExclude>NOTICE</inputExclude>
                    <inputExclude>NOTICE.txt</inputExclude>
                    <inputExclude>README.md</inputExclude>
                    <inputExclude>README</inputExclude>
                    <inputExclude>installEclipseSettings.sh</inputExclude>
                    <inputExclude>db/**/*</inputExclude>
                    <inputExclude>src/main/java/org/dkpro/jwpl/tutorial/parser/DarmstadtWikipediaArticle.txt</inputExclude>
                    <inputExclude>src/main/resources/**/*</inputExclude>
                    <inputExclude>src/test/resources/**/*</inputExclude>
                    <inputExclude>src/test-e2e/resources/**/*</inputExclude>
                    <inputExclude>.activate_rat-check</inputExclude>
                    <inputExclude>.github/**/*</inputExclude>
                  </inputExcludes>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>