<?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>

    <parent>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-parent</artifactId>
        <version>52</version>
    </parent>

    <artifactId>commons-rdf-parent</artifactId>
    <version>0.6.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>Commons RDF</name>
    <description>Commons Java API for RDF 1.1</description>

    <url>https://commons.apache.org/proper/commons-rdf/</url>

    <inceptionYear>2015</inceptionYear>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.encoding>UTF-8</project.build.encoding>
        <commons.encoding>UTF-8</commons.encoding>
        <commons.componentid>rdf</commons.componentid>
        <commons.module.name>org.apache.commons.rdf</commons.module.name>
        <commons.release.version>0.6.0</commons.release.version>
        <commons.bc.version>0.5.0</commons.bc.version>
        <commons.jira.id>COMMONSRDF</commons.jira.id>
        <commons.jira.pid>12316620</commons.jira.pid>
        <commons.site.path>rdf</commons.site.path>
        <commons.jacoco.version>0.8.8</commons.jacoco.version>
	    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-rdf/</commons.scmPubUrl>
        <!--
        <commons.scmPubCheckoutDirectory>${project.build.directory}/site-content</commons.scmPubCheckoutDirectory>
        -->
        <commons.javadoc.java.link>https://docs.oracle.com/javase/8/docs/api/</commons.javadoc.java.link>
        
        <commons.japicmp.version>0.15.7</commons.japicmp.version>
        
        
	    <!--  NOTE: jsonldjava is also used by rdf4j and jena, check the version
	          is cross-compatible -->
        <jsonldjava.version>0.13.4</jsonldjava.version>
        <rdf4j.version>3.7.6</rdf4j.version>
        <jena.version>4.1.0</jena.version>
        <!--  NOTE: dexx and xerces versions should match 
        the versions marked as <optional> in jena-osgi pom
         -->
        <dexx.collection.version>0.7</dexx.collection.version>
        <servicemix.xerces.version>2.11.0_1</servicemix.xerces.version>

        <!-- Test dependencies -->
        <slf4j.version>1.7.26</slf4j.version>
        <junit.version>4.13.2</junit.version>
        <skipAPICompatCheck>false</skipAPICompatCheck>
    </properties>

    <scm>
        <url>https://gitbox.apache.org/repos/asf/commons-rdf.git</url>
        <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-rdf.git</connection>
        <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-rdf.git</developerConnection>
        <tag>HEAD</tag>
    </scm>

    <issueManagement>
        <system>Jira</system>
        <url>https://issues.apache.org/jira/browse/COMMONSRDF</url>
    </issueManagement>
    <ciManagement>
      <system>jenkins</system>
      <url>https://builds.apache.org/</url>
    </ciManagement>

    <developers>
        <developer>
            <id>lewismc</id>
            <name>Lewis John McGibbney</name>
            <email>lewismc[at]apache[dot]org</email>
            <roles>
                <role>Committer</role>
                <role>Emeritus PPMC Member</role>
                <role>Emeritus Champion</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>ggregory</id>
            <name>Gary Gregory</name>
            <email>ggregory at apache.org</email>
            <url>https://www.garygregory.com</url>
            <organization>The Apache Software Foundation</organization>
            <organizationUrl>https://www.apache.org/</organizationUrl>      
            <roles>
                <role>PMC Member</role>
            </roles>
            <timezone>America/New_York</timezone>
            <properties>
                <picUrl>https://people.apache.org/~ggregory/img/garydgregory80.png</picUrl>
            </properties>
        </developer>
        <developer>
            <id>wikier</id>
            <name>Sergio Fernández</name>
            <email>wikier[at]apache[dot]org</email>
            <url>http://www.wikier.org</url>
            <roles>
                <role>Committer</role>
                <role>Emeritus PPMC Member</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>stain</id>
            <name>Stian Soiland-Reyes</name>
            <email>stain[at]apache[dot]org</email>
            <url>http://orcid.org/0000-0001-9842-9718</url>
            <roles>
                <role>Committer</role>
                <role>PMC Member</role>
                <role>Emeritus PPMC Member</role>
            </roles>
            <timezone>+0</timezone>
        </developer>
        <developer>
            <id>enridaga</id>
            <name>Enrico Daga</name>
            <email>enridaga[at]apache[dot]org</email>
            <roles>
                <role>Committer</role>
                <role>Emeritus PPMC Member</role>
            </roles>
            <timezone>+0</timezone>
        </developer>
        <developer>
            <id>britter</id>
            <name>Benedikt Ritter</name>
            <email>britter[at]apache[dot]org</email>
            <roles>
                <role>Committer</role>
                <role>PMC Member</role>
                <role>Emeritus PPMC Member</role>
            </roles>
            <timezone>+1</timezone>
        </developer>
        <developer>
            <id>ansell</id>
            <name>Peter Ansell</name>
            <email>ansell[at]apache[dot]org</email>
            <url>https://github.com/ansell</url>
            <roles>
                <role>Reviewer</role>
                <role>Emeritus Committer</role>
                <role>Emeritus PPMC Member</role>
            </roles>
        </developer>
    </developers>

    <contributors>
        <contributor>
            <name>Reto Gmür</name>
            <email>reto[at]apache[dot]org</email>
            <roles>
                <role>Emeritus Committer</role>
                <role>Emeritus PPMC Member</role>
            </roles>
            <timezone>+1</timezone>
        </contributor>
        <contributor>
            <name>Andy Seaborne</name>
            <email>andy[at]apache[dot]org</email>
            <roles>
                <role>Emeritus Committer</role>
                <role>Emeritus PPPMC Member</role>
                <role>Reviewer</role>
            </roles>
            <timezone>+0</timezone>
        </contributor>
        <contributor>
            <name>Rob Vesse</name>
            <email>rvesse[at]apache[dot]org</email>
            <roles>
                <role>Emeritus Mentor</role>
            </roles>
            <timezone>+0</timezone>
        </contributor>
        <contributor>
            <name>John D Ament</name>
            <email>johndament[at]apache[dot]org</email>
            <roles>
                <role>Emeritus PPMC Member</role>
                <role>Emeritus Mentor</role>
            </roles>
            <timezone>+1</timezone>
        </contributor>
        <contributor>
            <name>Aaron Coburn</name>
            <email>acoburn[at]apache[dot]org</email>
            <roles>
                <role>Contributor</role>
            </roles>
            <timezone>+1</timezone>
        </contributor>
        <contributor>
            <name>Adam Soroka</name>
            <email>ajs6f[at]apache[dot]org</email>
            <roles>
                <role>Reviewer</role>
            </roles>
            <timezone>+0</timezone>
        </contributor>
        <contributor>
            <name>Guohui Xiao</name>
            <email>gx.xiao[at]gmail[dot]com</email>
	    <url>http://orcid.org/0000-0002-5115-4769</url>
            <roles>
                <role>Contributor</role>
            </roles>
            <timezone>+1</timezone>
        </contributor>
    </contributors>

    <modules>
        <module>commons-rdf-api</module>
        <module>commons-rdf-simple</module>
        <module>commons-rdf-rdf4j</module>
        <module>commons-rdf-jena</module>
        <module>commons-rdf-jsonld-java</module>
        <module>commons-rdf-integration-tests</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--  
    Common dependencies across modules. 
    Keep this list small and only <scope>test</scope> !
    -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <!-- System.err logging for Jena, JSONLD-Java, RDF4J -->
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <defaultGoal>clean verify javadoc:javadoc</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <skipIfEmpty>true</skipIfEmpty>
                    <archive>
                        <addMavenDescriptor>false</addMavenDescriptor>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>jar</goal>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <skipIfEmpty>true</skipIfEmpty>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <finalName>apache-commons-rdf-${project.version}</finalName>
                    <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <additionalparam>-Xdoclint:all</additionalparam>
                    <links>
                    <link>${commons.javadoc.java.link}</link>
                    <link>https://jena.apache.org/documentation/javadoc/jena/</link>
                    <link>https://jena.apache.org/documentation/javadoc/arq/</link>
                    <link>https://rdf4j.org/javadoc/2.5.4//</link>
                    </links>
                </configuration>
            </plugin>
            <!--
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <encoding>${project.build.encoding}</encoding>
                </configuration>
            </plugin>
-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <useReleaseProfile>true</useReleaseProfile>
            <!-- TODO: Can we use apache-parent's apache-release rather than common-parent's release?
            It seems to force adding a -source-release
            -->
                    <releaseProfiles>release</releaseProfiles>
                    <goals>deploy</goals>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <localCheckout>true</localCheckout>
                    <tagNameFormat>@{version}</tagNameFormat>
                    <preparationGoals>clean install</preparationGoals>
                    <pushChanges>false</pushChanges>
                    <connectionUrl>scm:git:file://`pwd`/.git</connectionUrl>
                </configuration>
            </plugin>
            <!-- Create code coverage reports and submit them to coveralls.io.
            https://coveralls.io/github/apache/commons-rdf
            -->
            <plugin>
                <groupId>org.eluder.coveralls</groupId>
                <artifactId>coveralls-maven-plugin</artifactId>
                <version>4.3.0</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jdepend-maven-plugin</artifactId>
                <version>${commons.jdepend.version}</version>
                <dependencies>
                    <!-- Forked jdepend https://github.com/nidi3/jdepend supports Java 8 -->
                    <dependency>
                      <groupId>guru.nidi</groupId>
                      <artifactId>jdepend</artifactId>
                      <version>2.9.5</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.doxia</groupId>
                        <artifactId>doxia-module-markdown</artifactId>
                        <version>1.7</version>
                    </dependency>
                </dependencies>
                <!--
                <configuration>
                    <siteDirectory>${project.basedir}/src/site</siteDirectory>
                    <outputDirectory>${project.build.directory}/site</outputDirectory>
                    <showAvatarImages>false</showAvatarImages>
                </configuration>
              -->
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!--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>
                              <!-- No longer needed?
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.jacoco</groupId>
                                        <artifactId>jacoco-maven-plugin</artifactId>
                                        <versionRange>[${commons.jacoco.version},)</versionRange>
                                        <goals>
                                            <goal>prepare-agent</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                              -->
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-antrun-plugin</artifactId>
                                        <versionRange>[1.8,)</versionRange>
                                        <goals>
                                            <goal>run</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.felix</groupId>
                                        <artifactId>maven-bundle-plugin</artifactId>
                                        <versionRange>[2.5.3,)</versionRange>
                                        <goals>
                                            <goal>manifest</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
                <plugin>
                    <!-- Check if we broke compatibibility against previous release -->
                    <groupId>com.github.siom79.japicmp</groupId>
                    <artifactId>japicmp-maven-plugin</artifactId>
                    <version>${commons.japicmp.version}</version>
                    <configuration>
                        <parameter>
                            <!-- Tell japicmp about the -incubator suffix for 0.3.0 -->
                            <oldVersionPattern>\d+\.\d+\.\d+\-incubating</oldVersionPattern>
                            <!-- japicmp requires "mvn package site" - below means "mvn
                                 site" still works (but without japicmp report) -->
                            <ignoreMissingNewVersion>true</ignoreMissingNewVersion>
                        </parameter>
                    </configuration>
                    <dependencies>
                      <dependency>
                        <!-- the current version of japicmp on JDK 9 requires the following javaee libraries -->
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>2.3.1</version>
                      </dependency>
                      <dependency>
                        <groupId>javax.activation</groupId>
                        <artifactId>activation</artifactId>
                        <version>1.1.1</version>
                      </dependency>
                      <dependency>
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>jaxb-runtime</artifactId>
                        <version>2.3.6</version>
                      </dependency>
                    </dependencies>
                </plugin>
                <!--
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>animal-sniffer-maven-plugin</artifactId>
                    <version>1.14</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>-->
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <version>${commons.rat.version}</version>
                    <configuration>
                        <excludes combine.children="append">
                            <exclude>.travis.yml</exclude>
                            <!-- Eclipse files in examples/ -->
                            <exclude>examples/.settings/**</exclude>
                            <exclude>examples/.project</exclude>
                            <exclude>examples/.classpath</exclude>
                            <!-- ServiceLoader file -->
                            <exclude>**/META-INF/services/*</exclude>
                            <!-- Duplicates of NOTICE and LICENSE -->
                            <exclude>**/src/main/resources/NOTICE</exclude>
                            <exclude>**/src/main/resources/LICENSE</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <reporting>
        <plugins>
            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-javadoc-plugin</artifactId>
                 <configuration>
                     <additionalparam>-Xdoclint:all</additionalparam>
                 </configuration>
                 <reportSets>
                   <reportSet><!-- by default, id = "default" -->
                     <reports><!-- select non-aggregate reports -->
                       <report>javadoc</report>
                       <report>test-javadoc</report>
                     </reports>
                   </reportSet>
                   <reportSet><!-- aggregate reportSet, to define in poms having modules -->
                     <id>aggregate</id>
                     <inherited>false</inherited><!-- don't run aggregate in child modules -->
                     <reports>
                       <report>aggregate</report>
                     </reports>
                   </reportSet>
                 </reportSets>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-checkstyle-plugin</artifactId>
                 <version>3.0.0</version>
                 <configuration>
                     <configLocation>${project.basedir}/src/conf/checkstyle.xml</configLocation>
                     <!-- Needed to define config_loc -->
                     <propertyExpansion>config_loc=${project.basedir}</propertyExpansion>
                     <enableRulesSummary>false</enableRulesSummary>
                 </configuration>
                 <reportSets>
                     <reportSet>
                         <reports>
                             <report>checkstyle-aggregate</report>
                         </reports>
                     </reportSet>
                 </reportSets>
             </plugin>
            <plugin>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.16.0</version>
                <configuration>
                    <targetJdk>${maven.compiler.target}</targetJdk>
                    <linkXref>true</linkXref>
                </configuration>
                <reportSets>
                    <reportSet>
                        <id>pmd-report</id>
                        <reports>
                            <report>pmd</report>
                        </reports>
                    </reportSet>
                    <reportSet>
                        <id>pmd-aggregate</id>
                        <inherited>false</inherited>
                        <reports>
                            <report>pmd</report>
                        </reports>
                        <configuration>
                            <aggregate>true</aggregate>
                        </configuration>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>${commons.findbugs.version}</version>
                <configuration>
                    <threshold>Normal</threshold>
                    <effort>Default</effort>
                    <excludeFilterFile>src/conf/findbugs-exclude-filter.xml</excludeFilterFile>
                    <fork>true</fork>
                    <jvmArgs>-Duser.language=en</jvmArgs>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <profiles>
        <profile>
            <id>ignore-japicmp</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- COMMONSRDF-62 : JAPICMP does not handle 0.x release boundaries as defined in Semantic Versioning -->
                <commons.japicmp.breakBuildOnBinaryIncompatibleModifications>false</commons.japicmp.breakBuildOnBinaryIncompatibleModifications>
            </properties>
        </profile>
        <profile>
            <id>release</id>
            <properties>
                <!-- COMMONSRDF-62 : JAPICMP does not handle 0.x release boundaries as defined in Semantic Versioning -->
                <commons.japicmp.breakBuildOnBinaryIncompatibleModifications>false</commons.japicmp.breakBuildOnBinaryIncompatibleModifications>
            </properties>
            <!-- extends the release profile from commons -->
            <build>
                <!-- <finalName>apache-commons-rdf-${project.version}</finalName> -->
                <plugins>
                    <plugin>
                        <!-- Avoid making *.asc.asc -->
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <configuration>
                            <excludes>
                                <exclude>**/*.asc</exclude>
                                <exclude>**/*.md5</exclude>
                                <exclude>**/*.sha1</exclude>
                            </excludes>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <distributionManagement>
      <site>
        <id>commonsrdf-site</id>
        <name>Apache Commons Site SVN</name>
        <url>scm:svn:${commons.scmPubUrl}</url>
      </site>
      <downloadUrl>${project.url}download.html</downloadUrl>
    </distributionManagement>

</project>
