<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <name>Apache Jena</name>
  <groupId>org.apache.jena</groupId>
  <artifactId>jena</artifactId>
  <packaging>pom</packaging>
  <url>https://jena.apache.org/</url>
  <version>5.0.0-rc1</version>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>31</version>
  </parent>

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

  <organization>
    <name>The Apache Software Foundation</name>
    <url>https://www.apache.org/</url>
  </organization>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/jena.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/jena.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf/jena.git</url>
    <tag>jena-5.0.0-rc1</tag>
  </scm>
  
  <properties>
    <!-- Build -->
    <java.version>17</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.outputTimestamp>2024-02-10T17:56:11Z</project.build.outputTimestamp>

    <!-- Logging -->
    <ver.slf4j>2.0.7</ver.slf4j>
    <ver.log4j2>2.22.1</ver.log4j2>

    <!-- JSON-LD 1.1 -->
    <ver.titanium-json-ld>1.3.3</ver.titanium-json-ld>
    <ver.jakarta.json>2.0.1</ver.jakarta.json>

    <ver.jetty>12.0.6</ver.jetty>
    <ver.shiro>1.13.0</ver.shiro>

    <ver.protobuf>3.25.2</ver.protobuf>
    <ver.libthrift>0.19.0</ver.libthrift>

    <ver.caffeine>3.1.8</ver.caffeine>
    <!-- Most of Jena uses other libraries for equivalent functionality. -->
    <ver.guava>33.0.0-jre</ver.guava>

    <ver.gson>2.10.1</ver.gson>
    <ver.lucene>9.9.2</ver.lucene>

    <ver.commons-io>2.15.1</ver.commons-io>
    <ver.commons-cli>1.6.0</ver.commons-cli>
    <ver.commons-lang3>3.14.0</ver.commons-lang3>
    <ver.commons-rdf>0.5.0</ver.commons-rdf>
    <ver.commons-csv>1.10.0</ver.commons-csv>
    <ver.commons-codec>1.16.0</ver.commons-codec>
    <ver.commons-compress>1.25.0</ver.commons-compress>
    <ver.commons-collections>4.4</ver.commons-collections>
    <ver.commons-fileupload>2.0.0-M1</ver.commons-fileupload>

    <ver.dexxcollection>0.7</ver.dexxcollection>
    <ver.micrometer>1.12.2</ver.micrometer>
    <ver.roaringbitmap>1.0.1</ver.roaringbitmap>

    <!-- Testing -->
    <ver.junit>4.13.2</ver.junit>  
    <ver.mockito>5.10.0</ver.mockito>
    <ver.awaitility>4.2.0</ver.awaitility>
    <ver.contract.tests>0.2.0</ver.contract.tests>

    <!-- For testing, not shipped -->
    <ver.graalvm>23.0.3</ver.graalvm>
    <ver.org.openjdk.jmh>1.37</ver.org.openjdk.jmh>

    <!-- GeoSPARQL related -->
    <ver.jaxb-api>2.3.1</ver.jaxb-api>
    <ver.jakarta-xml-bind>4.0.1</ver.jakarta-xml-bind>
    <ver.jcommander>1.82</ver.jcommander>
    <ver.sis>1.4</ver.sis>
    <ver.jts>1.19.0</ver.jts>

    <!-- Plugins -->
    <ver.plugin.rat>0.16.1</ver.plugin.rat>
    <ver.plugin.assembly>3.6.0</ver.plugin.assembly>
    <ver.plugin.compiler>3.12.1</ver.plugin.compiler>
    <ver.plugin.surefire>3.2.5</ver.plugin.surefire>
    <ver.plugin.javadoc>3.6.3</ver.plugin.javadoc>
    <ver.plugin.war>3.4.0</ver.plugin.war>
    <ver.plugin.shade>3.5.1</ver.plugin.shade>
    <ver.plugin.enforcer>3.4.1</ver.plugin.enforcer>
    <ver.plugin.cyclonedx>2.7.11</ver.plugin.cyclonedx>
    <ver.plugin.spdx>0.7.0</ver.plugin.spdx>
  </properties>

  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/JENA</url>
  </issueManagement>
  
  <mailingLists>
    <mailingList>
      <name>Jena Users Mailing List</name>
      <post>users@jena.apache.org</post>
      <subscribe>users-subscribe@jena.apache.org</subscribe>
      <unsubscribe>users-unsubscribe@jena.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?users@jena.apache.org</archive>
      <otherArchives>
        <otherArchive>https://mail-archives.apache.org/mod_mbox/jena-users/</otherArchive>
        <otherArchive>https://www.mail-archive.com/users@jena.apache.org/</otherArchive>
        <otherArchive>https://markmail.org/search/?q=list%3Aorg.apache.jena.users</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Jena Developers Mailing List</name>
      <post>dev@jena.apache.org</post>
      <subscribe>dev-subscribe@jena.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@jena.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?dev@jena.apache.org</archive>
      <otherArchives>
        <otherArchive>https://lists.apache.org/mod_mbox/jena-dev/</otherArchive>
        <otherArchive>https://www.mail-archive.com/dev@jena.apache.org/</otherArchive>
        <otherArchive>https://markmail.org/search/?q=list%3Aorg.apache.jena.dev</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Jena Commits</name>
      <post>commits@jena.apache.org</post>
      <subscribe>commits-subscribe@jena.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@jena.apache.org</unsubscribe>
      <archive>https://lists.apache.org/list.html?commits@jena.apache.org</archive>
      <otherArchives>
        <otherArchive>https://mail-archives.apache.org/mod_mbox/jena-commits/</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>

  <profiles>
    <profile>
      <!--
          This is the dev profile, typically used locally with 
          "mvn clean install -Pdev".
          It builds the modules shipped in apache-jena binaries
          but does not build these binaries.
          This profile does not build javadoc.
      -->
      <id>dev</id>
      <modules>
        <module>jena-iri</module>
        <module>jena-base</module>
        
        <module>jena-core</module>
        <module>jena-arq</module>
        <module>jena-shacl</module>
        <module>jena-shex</module>
        <module>jena-rdfpatch</module>
        <module>jena-rdfconnection</module>
        <module>jena-db</module>
        <module>jena-tdb1</module>
        <module>jena-tdb2</module>
        
        <module>apache-jena-libs</module>

        <module>jena-text</module>
        
        <module>jena-cmds</module>
        <module>jena-geosparql</module>
        <module>jena-fuseki2</module>

        <module>jena-integration-tests</module>

        <module>jena-benchmarks</module>
        <!-- Binary distribution -->
        <!-- <module>apache-jena</module> -->

        <module>jena-bom</module>

      </modules>

      <build>
        <plugins>
          <!-- For -Pdev :: don't create javadoc. -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>
        </plugins>
      </build>

    </profile>

    <profile>
      <!--
          This is the complete profile, it builds everything including slow
          building modules and the distribution packages.
      -->
      <id>complete</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <property>
          <name>profile.complete</name>
          <value>true</value>
        </property>
      </activation>
      <modules>
        <!-- Basic modules -->
        <module>jena-iri</module>
        <module>jena-base</module>

        <!-- Main modules -->
        <module>jena-core</module>
        <module>jena-arq</module>
        <module>jena-shacl</module>
        <module>jena-shex</module>
        <module>jena-rdfpatch</module>
        <module>jena-rdfconnection</module>
        <module>jena-db</module>
        <module>jena-tdb1</module>
        <module>jena-tdb2</module>
        <module>apache-jena-libs</module>

        <module>jena-text</module>

        <module>jena-cmds</module>
        <module>jena-fuseki2</module>

        <module>jena-geosparql</module>
        <module>jena-fuseki2/jena-fuseki-geosparql</module>
        
        <!--
            Tests of artifacts that require additional 
            modules built later in the build process.
            For example, using Fuseki as a test server to
            test remote client APIs.
        -->
        <module>jena-integration-tests</module>

        <module>jena-benchmarks</module>
        
        <!-- Binary distribution -->
        <module>apache-jena</module>

        <!-- Other -->
        <module>jena-permissions</module>
        <module>jena-extras</module>
        <module>jena-examples</module>

        <module>jena-bom</module>

      </modules>
    </profile>

  </profiles>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${ver.junit}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${ver.commons-codec}</version>
      </dependency>
      
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${ver.commons-io}</version>
      </dependency>
      
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>${ver.commons-compress}</version>
        <exclusions>
          <exclusion>
            <!-- This is scope=provided but interferes with log4j JENA-2137 -->
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <!-- Protobuf only, not gRPC -->
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${ver.protobuf}</version>
      </dependency>
      
      <dependency>
        <groupId>org.apache.thrift</groupId>
        <artifactId>libthrift</artifactId>
        <version>${ver.libthrift}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>*</artifactId>
          </exclusion>

          <!-- 
               Jena does not use the RPC capabilities of Thrift,
               only the binary data format.
          -->
          <exclusion>
            <groupId>org.apache.httpcomponents.client5</groupId>
            <artifactId>*</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.httpcomponents.core5</groupId>
            <artifactId>*</artifactId>
          </exclusion>
          <exclusion>
            <groupId>jakarta.servlet</groupId>
            <artifactId>*</artifactId>
          </exclusion>
          <exclusion>
            <groupId>jakarta.annotation</groupId>
            <artifactId>*</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-csv</artifactId>
        <version>${ver.commons-csv}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${ver.commons-lang3}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>${ver.commons-collections}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-fileupload2-jakarta</artifactId>
        <version>${ver.commons-fileupload}</version>
      </dependency>

      <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>caffeine</artifactId>
        <version>${ver.caffeine}</version>
      </dependency>

      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${ver.guava}</version>
        <exclusions>
          <!-- These sometimes cause a convergence error with Caffeine -->
          <exclusion>
            <groupId>org.checkerframework</groupId>
            <artifactId>checker-qual</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.errorprone</groupId>
            <artifactId>error_prone_annotations</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <!-- supports persistent data structures -->
      <dependency>
        <groupId>com.github.andrewoma.dexx</groupId>
        <artifactId>collection</artifactId>
        <version>${ver.dexxcollection}</version>
      </dependency>
      
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${ver.gson}</version>
      </dependency>    
      
      <!-- JSON-LD 1.1 read support -->
      <!-- Titanium JSON-LD -->
      <dependency>
        <!-- Apache License -->
        <groupId>com.apicatalog</groupId>
        <artifactId>titanium-json-ld</artifactId>
        <version>${ver.titanium-json-ld}</version>
      </dependency>
      <!-- Eclipse Public License 2.0 (category-B) -->
      <!--
          Not required if using org.glassfish:jakarta.json because 
          that contains a copy. Less shading warnings if not used
          in jena-arq.
      -->
      <dependency>
        <groupId>jakarta.json</groupId>
        <artifactId>jakarta.json-api</artifactId>
        <version>${ver.jakarta.json}</version>
      </dependency>

      <!-- Eclipse Public License 2.0 (category-B) -->
      <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.json</artifactId>
        <version>${ver.jakarta.json}</version>
      </dependency>
      <!-- End JSON-LD 1.1 read support -->

      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-bom</artifactId>
        <version>${ver.jetty}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>

      <dependency>
        <groupId>org.eclipse.jetty.ee10</groupId>
        <artifactId>jetty-ee10-bom</artifactId>
        <version>${ver.jetty}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>

      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>${ver.shiro}</version>
        <classifier>jakarta</classifier>
      </dependency>

      <!-- 2.0.0
           <dependency>
           <groupId>org.apache.shiro</groupId>
           <artifactId>shiro-jakarta-ee</artifactId>
           <version>${ver.shiro}</version>
           <classifier>jakarta</classifier>
           </dependency>
      -->
      
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-web</artifactId>
        <version>${ver.shiro}</version>
        <classifier>jakarta</classifier>
      </dependency>

      <!-- Lucene dependencies -->
      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-core</artifactId>
        <version>${ver.lucene}</version>
        <type>jar</type>
      </dependency>

      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-analysis-common</artifactId>
        <version>${ver.lucene}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-queryparser</artifactId>
        <version>${ver.lucene}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-highlighter</artifactId>
        <version>${ver.lucene}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.lucene</groupId>
        <artifactId>lucene-backward-codecs</artifactId>
        <version>${ver.lucene}</version>
      </dependency>

      <!-- Logging -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${ver.slf4j}</version>
      </dependency>

      <!-- 
           java.util.logging (JUL)
           Do not use jul-to-slf4j and slf4j-jdk14 together.
      -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>${ver.slf4j}</version>
      </dependency>

      <!-- Log4j2 -->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-bom</artifactId>
        <version>${ver.log4j2}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>

      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j2-impl</artifactId>
        <version>${ver.log4j2}</version>
        <optional>true</optional>
      </dependency>

      <!-- JENA-2137
           log4j depends on an old version of org.osgi.core (the minimum supported).
           Other dependencies may pull in org.osgi (even if scope=provided)
           and cause an enforcer error.
      -->
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${ver.log4j2}</version>
        <optional>true</optional>
        <exclusions>
          <exclusion>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${ver.log4j2}</version>
        <optional>true</optional>
        <exclusions>
          <exclusion>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <!-- And intercept any uses of Jakarta Commons Logging 
           e.g. Apache Common HTTP client. 
      -->

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${ver.slf4j}</version>
      </dependency>

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>${ver.slf4j}</version>
      </dependency>

      <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>${ver.commons-cli}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-rdf-api</artifactId>
        <version>${ver.commons-rdf}</version>
      </dependency>

      <dependency>
        <groupId>org.roaringbitmap</groupId>
        <artifactId>RoaringBitmap</artifactId>
        <version>${ver.roaringbitmap}</version>
      </dependency>

      <dependency>
        <groupId>org.graalvm.js</groupId>
        <artifactId>js</artifactId>
        <version>${ver.graalvm}</version>
      </dependency>

      <dependency>
        <groupId>org.graalvm.js</groupId>
        <artifactId>js-scriptengine</artifactId>
        <version>${ver.graalvm}</version>
      </dependency>

      <dependency>
        <groupId>org.python</groupId>
        <artifactId>jython-standalone</artifactId>
        <version>${ver.jython}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-core</artifactId>
        <version>${ver.org.openjdk.jmh}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-generator-annprocess</artifactId>
        <version>${ver.org.openjdk.jmh}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.xenei</groupId>
        <artifactId>junit-contracts</artifactId>
        <version>${ver.contract.tests}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <artifactId>commons-cli</artifactId>
            <groupId>commons-cli</groupId>
          </exclusion>
          <exclusion>
            <artifactId>commons-logging</artifactId>
            <groupId>commons-logging</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      
      <dependency>
        <groupId>org.xenei</groupId>
        <artifactId>contract-test-maven-plugin</artifactId>
        <version>${ver.contract.tests}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${ver.mockito}</version>
        <scope>test</scope>
      </dependency>
      
      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>${ver.awaitility}</version>
      </dependency>

      <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-core</artifactId>
        <version>${ver.micrometer}</version>
      </dependency>

      <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
        <version>${ver.micrometer}</version>
      </dependency>

      <!-- jena-geosparql, jena-fuseki-geosparql related -->

      <dependency>
        <groupId>com.beust</groupId>
        <artifactId>jcommander</artifactId>
        <version>${ver.jcommander}</version>
      </dependency>

      <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>${ver.jakarta-xml-bind}</version>
      </dependency>
      
      <!-- Needed by jena-geosparql -->
      <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>${ver.jaxb-api}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.sis.core</groupId>
        <artifactId>sis-referencing</artifactId>
        <version>${ver.sis}</version>
      </dependency>

      <dependency>
        <groupId>org.locationtech.jts</groupId>
        <artifactId>jts-core</artifactId>
        <version>${ver.jts}</version>
      </dependency>

      <dependency>
        <groupId>org.locationtech.jts.io</groupId>
        <artifactId>jts-io-common</artifactId>
        <version>${ver.jts}</version>
      </dependency>

      <dependency>
        <groupId>org.jdom</groupId>
        <artifactId>jdom2</artifactId>
        <version>2.0.6.1</version>
      </dependency>

      <dependency>
        <groupId>io.github.galbiston</groupId>
        <artifactId>expiring-map</artifactId>
        <version>1.0.2</version>
      </dependency>

      <dependency>
        <groupId>io.github.galbiston</groupId>
        <artifactId>rdf-tables</artifactId>
        <version>1.0.5</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.jena</groupId>
            <artifactId>*</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.beust</groupId>
            <artifactId>jcommander</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.4</version>
      </dependency>

      <!-- END jena geosparql -->

    </dependencies>

  </dependencyManagement>

  <build>
    <defaultGoal>clean test install</defaultGoal>
    <!-- Run the enforcer plugin automatically at compile time -->
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration combine.self="override">
              <rules>
                <dependencyConvergence />
                <requirePluginVersions>
                  <message>Best practice is to always define plugin versions!</message>
                  <banLatest>true</banLatest>
                  <banRelease>true</banRelease>
                </requirePluginVersions>
                <requireReleaseDeps>
                  <message>No SNAPSHOT dependencies are allowed!</message>
                  <onlyWhenRelease>true</onlyWhenRelease>
                </requireReleaseDeps>
                <requireMavenVersion>
                  <version>3.8.1</version>
                </requireMavenVersion>
              </rules>
              <fail>true</fail>
              <failFast>false</failFast>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Run the RAT Plugin -->
      <!--
          To run from the command line:
          mvn apache-rat:rat \
          -Drat.excludeSubProjects=false \
          -Drat.excludesFile=build-files/rat-exclusions.txt
      -->
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>${ver.plugin.rat}</version>
        <!-- 
             Run only if maven is running from this POM,
             not when run in a sub-module with this as parent.
        -->
        <inherited>false</inherited>
        <executions>
          <execution>
            <id>rat-checks</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludeSubProjects>false</excludeSubProjects>
          <excludesFile>build-files/rat-exclusions.txt</excludesFile>
        </configuration>
      </plugin>

      <!-- SBOM : CycloneDX -->
      <plugin>
        <groupId>org.cyclonedx</groupId>
        <artifactId>cyclonedx-maven-plugin</artifactId>
        <version>${ver.plugin.cyclonedx}</version>
        <executions>
          <execution>
            <id>build-sbom-cyclonedx</id>
            <phase>package</phase>
            <goals>
              <goal>makeAggregateBom</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <outputName>${project.artifactId}-${project.version}-bom</outputName>
        </configuration>
      </plugin>

      <!-- SBOM : SPDX -->
      <!-- Example : placeholder
           <plugin>
           <groupId>org.spdx</groupId>
           <artifactId>spdx-maven-plugin</artifactId>
           <version>${ver.plugin.spdx}</version>
           <configuration>
           <licenseDeclared>Apache-2.0</licenseDeclared>
           <copyrightText>See NOTICE file</copyrightText>
           </configuration>
           <executions>
           <execution>
           <id>build-sbom-spdx</id>
           <phase>package</phase>
           <goals>
           <goal>createSPDX</goal>
           </goals>
           </execution>
           </executions>
           </plugin>
      -->

    </plugins>

    <!-- Plugin version list: https://maven.apache.org/plugins/index.html -->
    <pluginManagement>
      <plugins>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>${ver.plugin.assembly}</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${ver.plugin.compiler}</version>
          <configuration>
            <release>${java.version}</release>
            <compilerArgument>-proc:none</compilerArgument>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${ver.plugin.surefire}</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <configuration>
            <archive>
              <manifestEntries>
                <Automatic-Module-Name>${automatic.module.name}</Automatic-Module-Name>
              </manifestEntries>
            </archive>
          </configuration>
          <!-- Some modules provide test frameworks
               <executions>
               <execution>
               <goals>
               <goal>test-jar</goal>
               </goals>
               </execution>
               </executions>
          -->
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
            <!-- see jar-plugin
                 <execution>
                 <id>attach-sources-test</id> 
                 <goals>
                 <goal>test-jar-no-fork</goal> 
                 </goals>
                 </execution>
            -->
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${ver.plugin.javadoc}</version>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <detectJavaApiLink>false</detectJavaApiLink>
            <source>${java.version}</source>

            <!-- To allow the build to keep going despite javadoc problems:
                 <failOnError>false</failOnError>
            -->
            <!-- For producible builds
                 https://maven.apache.org/guides/mini/guide-reproducible-builds.html
            -->
            <notimestamp>true</notimestamp>

            <!-- Java11 javadoc: "syntax,html" fails on things that aren't 
                 wrong and applies unrequested checks such as group "missing".
                 Java17 has fixed these and behaves as expected:
                 <doclint>syntax,html,reference</doclint>
            -->
            <doclint>none</doclint>
            <quiet>true</quiet>
            <version>true</version>
            <show>public</show>
            <encoding>UTF-8</encoding>
            <windowtitle>${project.name} ${project.version}</windowtitle>
            <doctitle>${project.name} ${project.version}</doctitle>
            <bottom>Licensed under the Apache License, Version 2.0</bottom>
            <links>
              <link>https://jena.apache.org/documentation/javadoc/jena/</link>
              <link>https://jena.apache.org/documentation/javadoc/arq/</link>
              <link>https://jena.apache.org/documentation/javadoc/tdb/</link>
              <link>https://jena.apache.org/documentation/javadoc/text/</link>
              <link>https://jena.apache.org/documentation/javadoc/rdfconnection/</link>
              <link>https://jena.apache.org/documentation/javadoc/fuseki2/</link>
              <link>https://jena.apache.org/documentation/javadoc/permissions/</link>
            </links>
            <!-- Settings for @apiNote, @implSpec and @implNote -->
            <tags>
              <tag>
                <name>apiNote</name>
                <placement>a</placement>
                <head>API Note:</head>
              </tag>
              <tag>
                <name>implSpec</name>
                <placement>a</placement>
                <head>Implementation Requirements:</head>
              </tag>
              <tag>
                <name>implNote</name>
                <placement>a</placement>
                <head>Implementation Note:</head>
              </tag>
            </tags>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <configuration>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <configuration>
            <overWriteReleases>false</overWriteReleases>
            <overWriteIfNewer>true</overWriteIfNewer>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>${ver.plugin.enforcer}</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>${ver.plugin.shade}</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>${ver.plugin.war}</version>
        </plugin>

        <!--
            Avoid the warnings and errors from m2e.
            This plugin's configuration is used to store Eclipse m2e settings only. 
            It has no influence on the Maven build itself.
        -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <!-- 
                       Warning:
                       "maven-remote-resources-plugin (goal "process") is ignored by m2e." 
                  -->
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>enforce</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <!-- 
                       Warning:
                       "maven-enforcer-plugin (goal "enforce") is ignored by m2e." 
                  -->
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-remote-resources-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>process</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                
                <pluginExecution>
                  <!--
                      Error:
                      Plugin execution not covered by lifecycle configuration
                  -->
                  <pluginExecutionFilter>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <versionRange>[0.14,)</versionRange>
                    <goals>
                      <goal>check</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>

                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.xenei</groupId>
                    <artifactId>contract-test-maven-plugin</artifactId>
                    <versionRange>[0.1.5,)</versionRange>
                    <goals>
                      <goal>contract-test</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
                
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>

      </plugins>
    </pluginManagement>
  </build>

  <reporting>
    <!-- <outputDirectory>${project.build.directory}/site</outputDirectory> -->

    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <configuration>
          <outputDirectory>${project.basedir}/target/surefire-reports-html</outputDirectory>
        </configuration>
      </plugin>

    </plugins>
  </reporting>

</project>
