<?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>41</version>
    </parent>

    <groupId>org.apache.commons</groupId>
    <artifactId>commons-rdf-parent</artifactId>
    <version>0.4.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.release.version>0.3.0</commons.release.version>
        <commons.jira.id>COMMONSRDF</commons.jira.id>
        <commons.jira.pid>12316620</commons.jira.pid>
        <commons.site.path>rdf</commons.site.path>
	<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>
        
        <!-- upgrade from 0.8.0 for Java 8 support -->
        <commons.japicmp.version>0.9.1</commons.japicmp.version>
        
        
	<!--  NOTE: jsonldjava is also used by rdf4j and jena, check the version 
	      is cross-compatible -->
        <jsonldjava.version>0.9.0</jsonldjava.version>
        <rdf4j.version>2.2</rdf4j.version>
        <jena.version>3.2.0</jena.version>
        <!--  NOTE: dexx and xerces versions should match 
        the versions marked as <optional> in jena-osgi pom
         -->
        <dexx.collection.version>0.6</dexx.collection.version>
        <servicemix.xerces.version>2.11.0_1</servicemix.xerces.version>


        <!-- Test dependencies -->
        <slf4j.version>1.7.20</slf4j.version>
        <junit.version>4.12</junit.version>
        
    </properties>

    <scm>
        <url>https://git-wip-us.apache.org/repos/asf/commons-rdf.git</url>
        <connection>scm:git:https://git-wip-us.apache.org/repos/asf/commons-rdf.git</connection>
        <developerConnection>scm:git:https://git-wip-us.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[dot]org</email>
            <roles>
                <role>Committer</role>
                <role>Emeritus PPMC Member</role>
                <role>Emeritus Mentor</role>
            </roles>
            <timezone>+1</timezone>
        </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>api</module>
        <module>simple</module>
        <module>rdf4j</module>
        <module>jena</module>
        <module>jsonld-java</module>
        <module>integration-tests</module>
    </modules>

    <!--  
    Common dependencies across modules. 
    Keep this list small and only <scope>test</scope> !
    -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <!-- System.err logging for Jena, JSONLD-Java, RDF4J
            -->
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>${slf4j.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <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>http://rdf4j.org/javadoc/2.0/</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.2.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.6</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>
          </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>${checkstyle.plugin.version}</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.6</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>release</id>
        <!-- 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>
