<?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>3.18.0-SNAPSHOT</version>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>23</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>HEAD</tag>
  </scm>

   <properties>
    <ver.junit>4.13.1</ver.junit>  

    <ver.slf4j>1.7.30</ver.slf4j>
    <ver.log4j2>2.14.0</ver.log4j2>
    <ver.shade-plugin>3.2.4</ver.shade-plugin>

    <ver.jetty>9.4.35.v20201120</ver.jetty>
    <ver.shiro>1.7.1</ver.shiro>

    <ver.libthrift>0.13.0</ver.libthrift>

    <!-- jsonld-java depends on depends on Jackson core
         and Jackson databind. databind has had a few CVEs
         so we exclude from jsonldjava and select the version
         ourselves.
         When upgrading jsonld, consult jsonld-java's
         POM for the correct dependency versions
         and use that or later.
    -->
    <ver.jsonldjava>0.13.2</ver.jsonldjava>
    <ver.jackson>2.12.1</ver.jackson>
    <ver.jackson-databind>2.12.1</ver.jackson-databind>

    <ver.commonsio>2.8.0</ver.commonsio>
    <ver.commonscli>1.4</ver.commonscli>
    <ver.commonslang3>3.11</ver.commonslang3>
    <ver.commonsrdf>0.5.0</ver.commonsrdf>
    <ver.commonscsv>1.8</ver.commonscsv>
    <ver.commons-codec>1.15</ver.commons-codec>
    <ver.commons-compress>1.20</ver.commons-compress>

    <ver.dexxcollection>0.7</ver.dexxcollection>

    <ver.httpclient>4.5.13</ver.httpclient>
    <ver.httpcore>4.4.14</ver.httpcore>
    <!-- Normally, these are the same as the above
         In the case of 4.2.6, there isn't a httpcore-osgi.
    -->
    <ver.httpcore-osgi>${ver.httpcore}</ver.httpcore-osgi>
    <ver.httpclient-osgi>${ver.httpclient}</ver.httpclient-osgi>
    
    <ver.lucene>7.7.3</ver.lucene>

    <ver.spatial4j>0.8</ver.spatial4j>

    <ver.mockito>3.7.7</ver.mockito>
    <ver.awaitility>4.0.3</ver.awaitility>
    <ver.micrometer>1.6.3</ver.micrometer>

    <ver.graalvm>21.0.0</ver.graalvm>

    <java.version>11</java.version>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
    <ver.contract.tests>0.2.0</ver.contract.tests>
  </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-shaded-guava</module>
        <module>jena-iri</module>
        <module>jena-base</module>
        
        <module>jena-core</module>
        <module>jena-arq</module>
        <module>jena-shacl</module>
        <module>jena-rdfconnection</module>
        <module>jena-tdb</module>
        <module>jena-db</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>

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

        <!-- Binary distribution -->
        <!-- <module>apache-jena</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-shaded-guava</module>
        <module>jena-iri</module>
        <module>jena-base</module>

        <!-- Main modules -->
        <module>jena-core</module>
        <module>jena-arq</module>
        <module>jena-shacl</module>
        <module>jena-rdfconnection</module>
        <module>jena-tdb</module>
        <module>jena-db</module>
        <module>apache-jena-libs</module>

        <module>jena-text</module>

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

        <!-- Javadoc does not build under Java11 without fixes (see plugin) -->
        <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, use Fuseki as a test server to
            test remote client APIs.
        -->
        <module>jena-integration-tests</module>
        
        <!-- Binary distribution -->
        <module>apache-jena</module>

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

        <!-- Slow building modules -->

        <!-- Javadoc does not build under Java11 without fixes (see plugin) -->
        <module>jena-jdbc</module>

        <module>apache-jena-osgi</module>
      </modules>
    </profile>
  </profiles>

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

      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient-cache</artifactId>
        <version>${ver.httpclient}</version>
        <exclusions>
          <!-- Replace with slf4j adapter -->
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${ver.httpclient}</version>
        <exclusions>
          <!-- Replace with slf4j adapter -->
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
          </exclusion>
        </exclusions>
      </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.commonsio}</version>
      </dependency>
      
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>${ver.commons-compress}</version>
      </dependency>

      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${ver.jackson}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${ver.jackson-databind}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.thrift</groupId>
        <artifactId>libthrift</artifactId>
        <version>${ver.libthrift}</version>
        <exclusions>
          <!-- Use whatever version Jena is using -->
          <exclusion>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

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

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

      <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.4</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
      </dependency>
      
      <!-- supports persistent data structures -->
      <dependency>
        <groupId>com.github.andrewoma.dexx</groupId>
        <artifactId>collection</artifactId>
        <version>${ver.dexxcollection}</version>
      </dependency>
      
      <dependency>
        <groupId>com.github.jsonld-java</groupId>
        <artifactId>jsonld-java</artifactId>
        <version>${ver.jsonldjava}</version>
        <exclusions>

          <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
          </exclusion>

          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <!-- Exclude so we use our choice of versions -->
          <exclusion>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient-cache</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient-osgi</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore-osgi</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>${ver.jetty}</version>
      </dependency>
      
      <!-- Jetty's useful servlets, inc compression -->
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlets</artifactId>
        <version>${ver.jetty}</version>
      </dependency>
      
      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-webapp</artifactId>
        <version>${ver.jetty}</version>
      </dependency>

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

      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-web</artifactId>
        <version>${ver.shiro}</version>
      </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-analyzers-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>

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

      <dependency>
        <groupId>org.locationtech.spatial4j</groupId>
        <artifactId>spatial4j</artifactId>
        <version>${ver.spatial4j}</version>
      </dependency>

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

      <!-- java.util.logging (JUL) -->
      <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>

      <!-- 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>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>${ver.commonscli}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-rdf-api</artifactId>
        <version>${ver.commonsrdf}</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.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>
        </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>

    </dependencies>

  </dependencyManagement>

  <build>
    <!-- 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 />
                <requireJavaVersion>
                  <version>1.8.0</version>
                </requireJavaVersion>
                <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.5.0</version>
                </requireMavenVersion>
              </rules>
              <fail>true</fail>
              <failFast>false</failFast>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Run the RAT Plugin -->
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>0.13</version>
        <executions>
          <execution>
            <id>rat-checks</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludeSubProjects>true</excludeSubProjects>
          <excludes>
            <exclude>**/hs_err_pid*.log</exclude>
            <exclude>**/.project</exclude>
            <exclude>**/.settings/**</exclude>
            <exclude>**/.classpath</exclude>
            <exclude>**/*.recommenders/**/*</exclude>
            <exclude>**/target/**/*</exclude>
            <exclude>**/README*</exclude>
            <!--
                jena-core exclusions
            -->
            <exclude>**/src-examples/data/*</exclude>
            
            <!--
                jena-fuseki exclusions
            -->
            <exclude>**/dist/ABOUT</exclude>
            <exclude>**/SEE_FUSEKI2</exclude>
            <!-- 
                 Need to exclude JS and CSS since much of it comes from 
                 other projects
            -->
            <exclude>**/src/main/webapp/css/*</exclude>
            <exclude>**/src/main/webapp/fonts/*</exclude>
            <exclude>**/src/main/webapp/js/**/*</exclude>

            <!-- SPARQLer (in jena-fuseki-main) -->
            <exclude>**/sparqler/data/empty.nt</exclude>
            <exclude>**/sparqler/pages/robots.txt</exclude>
            <exclude>**/sparqler/pages/crossdomain.xml</exclude>
            
            <!-- General exclusions -->
            <!-- 
                 Vocabularies are often just local copies of vocabularies
                 published by others
            -->
            <exclude>**/vocabularies/*</exclude>
            <exclude>**/Vocabularies/*</exclude>

            <!--
                Javadoc add-ons files are required to be simple and our javadoc configuration
                will ensure appropriate license and copyright statements are inserted
                into generated documentation anyway so no need to put license statements
                in these files
            -->
            <exclude>**/src/main/**/*.html</exclude>
            <exclude>**/src/**/package-info.java</exclude>
            
            <exclude>**/DEPENDENCIES</exclude>
            
            <!--
                Text and Markdown files are typically used only for documentation purposes
                and license declarations are usually spurious in these files since often they
                will refer to the LICENSE/NOTICE for users to find the actual licenses
            -->
            <exclude>**/*.txt</exclude>
            <exclude>**/*.md</exclude>
            <!-- No comments in JSON -->
            <exclude>**/*.json</exclude>
            <exclude>**/*.srj</exclude>
            
            <!--
                META-INF services files can include comments but a license header would be
                unecessarily clutter so we exclude these
            -->
            <exclude>**/META-INF/services/*</exclude>
            
            <!--
                Jena historically has large numbers of small test file
                with no license headers.  Such small files are not required 
                to have headers. 

                In addition, there are files with different Licenses
                (e.g. W3C Software Licence, W3C Test Suite License) as
                noted in the code tree.
            -->
            <exclude>**/src/test/files/**/*</exclude>
            <exclude>**/src/test/resources/**/*</exclude>
            <exclude>**/testing/**/*</exclude>

            <exclude>**/derby.log</exclude>
            <exclude>**/DB/**/*</exclude>
            <!-- TDB config files JSON - no comments allowed -->
            <exclude>**/tdb*.cfg</exclude>
            <!-- Fuseki2 server "run" area -->
            <exclude>**/run/**/*</exclude>
            <!-- Cached classpath for commands - autogenerated -->
            <exclude>**/*.classpath</exclude>

            <!-- MSHADE-124 -->
            <exclude>**/dependency-reduced-pom.xml</exclude>
            <exclude>.travis.yml</exclude>
            <exclude>jena-examples/**</exclude>

            <!-- This is OGC software licensed -->
            <exclude>**/geosparql_vocab_all_v1_0_1_updated.rdf</exclude>

            <!-- W3C SHACL vocabulary and shapes for SHACL itself -->
            <exclude>**/src/main/resources/std/*</exclude>

          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
      </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>3.3.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
          <configuration>
            <release>${java.version}</release>
          </configuration>
          <!-- Java8 compiler for Java8 output : retain temporarily 2021-01
          <configuration>
            <showDeprecation>false</showDeprecation>
            <encoding>UTF-8</encoding>
            <debug>true</debug>
            <debuglevel>source,lines,vars</debuglevel>
            <optimize>true</optimize>
            <source>${jdk.version}</source>
            <target>${jdk.version}</target>
          </configuration>
          -->
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.2</version>
          <!-- 
               Bug: SUREFIRE-1588 Fixed at 3.0.0
               https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911925
          -->
          <configuration>
            <useSystemClassLoader>false</useSystemClassLoader>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
        </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>
            <!-- Only needed in some jars <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>3.2.0</version>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <!--
                 https://bugs.openjdk.java.net/browse/JDK-8212233
            -->
            
            <!-- Java 11: JDK-8212233
                 Fixed in 12.0.1, 11.0.3

                 Explicitly define the source as Java8 when building
                 with java8 source code for java8 output.
                 Not good enough when compiling for Java11 output.

                 https://bugs.openjdk.java.net/browse/JDK-8212233
                     which affects early Java11 and Java12
                 https://issues.apache.org/jira/browse/MJAVADOC-555
            -->

            <!-- Java 11
                 If Java8 output, and using Java11 to build, need:
                 <source>8</source>
                 See also Java11 problems below.
            -->
            <!-- Java 10
                 <additionalOptions>-html5</additionalOptions>
            -->
            <quiet>true</quiet>
            <doclint>none</doclint>

            <!-- To allow the build to keep going despite javadoc problems:
                 <failOnError>false</failOnError>
            -->

            <!-- Fixes for Javadoc when bulding for Java11. Both these are needed. -->

            <!-- (1) Fix for:
                 Named / unnamed modules error/warning
            -->
            <detectJavaApiLink>false</detectJavaApiLink>

            <!-- (2) Fix for:
                 [ERROR] error: the unnamed module reads package PKG from both A and B
            -->
            <source>8</source>

            <!-- End Java11 fixes (2021-01) -->

            <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>
              <link>https://jena.apache.org/documentation/javadoc/jdbc/</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>3.0.0-M3</version>
          <executions>
            <execution>
              <id>enforce</id>
              <goals>
                <goal>enforce</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <rules>
              <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>
              <DependencyConvergence />
            </rules>
            <fail>true</fail>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>5.1.1</version>
          <extensions>true</extensions>
        </plugin>

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

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.3.1</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.11,)</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>
