<?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>

  <groupId>org.apache.jena</groupId>
  <artifactId>jena-parent</artifactId>
  <packaging>pom</packaging>
  <url>http://jena.apache.org/</url>
  <version>9</version>
  <name>Apache Jena - Parent</name>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>14</version>
    <relativePath /> <!-- MNG-4687 Avoid warning -->
  </parent>

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

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

  <scm>
    <connection>scm:svn:https://svn.apache.org/repos/asf/jena/tags/jena-2.11.2/jena-parent</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/jena/tags/jena-2.11.2/jena-parent</developerConnection>
    <url>https://svn.apache.org/repos/asf/jena/tags/jena-2.11.2/jena-parent</url>
  </scm>

  <properties>
    <ver.slf4j>1.7.6</ver.slf4j>
    <ver.log4j>1.2.17</ver.log4j>
    <ver.junit>4.11</ver.junit>
    <ver.xerces>2.11.0</ver.xerces>
    <ver.jsonldjava>0.4</ver.jsonldjava>
    <ver.commons-fileupload>1.3.1</ver.commons-fileupload>

    <!-- These are connected because solr4j depends on httpclient as well -->
    <ver.httpclient>4.2.6</ver.httpclient>
    <ver.lucene>4.6.1</ver.lucene>
    <ver.solr>4.6.1</ver.solr>
    <ver.spatial4j>0.4</ver.spatial4j>

    <jdk.version>1.6</jdk.version>
    <targetJdk>${jdk.version}</targetJdk> <!-- MPMD-86 workaround -->

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
  </properties>

  <!-- Version management -->
  <dependencyManagement>
    <dependencies>
      <dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>${ver.junit}</version>
	<scope>test</scope>
      </dependency>
      
      <dependency>
	<groupId>xerces</groupId>
	<artifactId>xercesImpl</artifactId>
	<version>${ver.xerces}</version>
      </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>
	</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>
	</exclusions>
      </dependency>

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

      <dependency>
	<groupId>com.github.jsonld-java</groupId>
	<artifactId>jsonld-java</artifactId>
	<version>${ver.jsonldjava}</version>
	<exclusions>
	  <exclusion>
	    <groupId>commons-logging</groupId>
	    <artifactId>commons-logging</artifactId>
	  </exclusion>
	  <!-- Exclude so we use out chocie 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.slf4j</groupId>
	    <artifactId>slf4j-api</artifactId>
	  </exclusion>
	</exclusions>
      </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>

      <!-- Solr client -->
      <!-- Exclusion of slf4j: Necessary so as to pick the version
	   we want. solrj->zookeeper has a dependency on slf4j
      -->

      <dependency>
	<artifactId>solr-solrj</artifactId>
	<groupId>org.apache.solr</groupId>
	<version>${ver.solr}</version>
	<exclusions>
	  <exclusion>
	    <groupId>org.slf4j</groupId>
	    <artifactId>slf4j-api</artifactId>
	  </exclusion>
	  <exclusion>
	    <groupId>org.slf4j</groupId>
	    <artifactId>slf4j-jdk14</artifactId>
	</exclusion>
	</exclusions>
      </dependency>

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

      <dependency>
	<groupId>com.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>

      <dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-log4j12</artifactId>
	<version>${ver.slf4j}</version>
      </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>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>${ver.log4j}</version>
	<exclusions>
	  <!-- Exclude things that don't resolve in some versions of log4j -->
	  <exclusion>
	    <groupId>javax.jms</groupId>
	    <artifactId>jms</artifactId>
	  </exclusion>
	  <exclusion>
	    <groupId>com.sun.jdmk</groupId>
	    <artifactId>jmxtools</artifactId>
	  </exclusion>
	  <exclusion>
	    <groupId>com.sun.jmx</groupId>
	    <artifactId>jmxri</artifactId>
	  </exclusion>
	  <exclusion>
	    <groupId>javax.mail</groupId>
	    <artifactId>mail</artifactId>
	  </exclusion>
	</exclusions>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
    </dependency>

    <!-- Needed because of the logging helper code -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
    </dependency>

  </dependencies>

  <build>
    <!-- Run the enforcer plugin automatically at compile time -->
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>
    </plugins>

    <!-- Plugin version list: http://maven.apache.org/plugins/index.html -->
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.1</version>
          <configuration>
            <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>

	<!-- Avoid the warning from m2e:
	     "maven-remote-resources-plugin (goal "process") is ignored by m2e."
	-->
	<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>

	      </pluginExecutions>
	    </lifecycleMappingMetadata>
	  </configuration>
	</plugin>
	
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.15</version>
        </plugin>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.4</version>
        </plugin>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>2.2.1</version>
          <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>2.9.1</version>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
            <goal>jar</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <version>true</version>
            <show>public</show>
            <quiet>true</quiet>
            <encoding>UTF-8</encoding>
            <windowtitle>${project.name} ${project.version}</windowtitle>
            <doctitle>${project.name} ${project.version}</doctitle>
            <bottom>Licenced under the Apache License, Version 2.0</bottom>
          </configuration>
        </plugin>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>2.6</version>
          <configuration>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.8</version>
          <configuration>
            <overWriteReleases>false</overWriteReleases>
            <overWriteIfNewer>true</overWriteIfNewer>
          </configuration>
        </plugin>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.9</version>
          <configuration>
            <!-- By default, have separate Eclipse and maven build areas -->
            <buildOutputDirectory>${project.build.directory}/classes-eclipse</buildOutputDirectory>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>false</downloadJavadocs>
          </configuration>
        </plugin>
        
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.2</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>
      
      </plugins>
    </pluginManagement>
  </build>

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

    <plugins>

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

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
          <instrumentation>
            <ignores>
              <ignore>org.slf4j.*</ignore>
            </ignores>
          </instrumentation>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.7</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.3</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <linkXref>true</linkXref>
          <sourceEncoding>utf-8</sourceEncoding>
          <minimumTokens>100</minimumTokens>
          <targetJdk>1.6</targetJdk>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>2.3.2</version>
      </plugin>

    </plugins>

  </reporting>
  
</project>
