<?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>
  <artifactId>jena-extras</artifactId>
  <version>3.5.0</version>
  <packaging>pom</packaging>
  <name>Apache Jena - Extras</name>
  <description>Extra packages for Jena development.
  This is the parent module for the Jena Extra modules.  
  These modules provide utiliities and larger packages that make Apache Jena development or usage 
  easier but that do not fall within the standard Jena framework.</description>

  <parent>
    <groupId>org.apache.jena</groupId>
    <artifactId>jena-project</artifactId>
    <version>3.5.0</version>
    <relativePath>../jena-project</relativePath>
  </parent>

  <!-- Need if the parent is a snapshot -->
  <repositories>
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>http://repository.apache.org/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
  </repositories>

  <modules>
    <module>jena-querybuilder</module>
  </modules>

  <properties>
    <plugin.license.version>1.9.0</plugin.license.version>
    <plugin.license.headerPath>${project.basedir}</plugin.license.headerPath>
    <jena-version>${project.version}</jena-version>
  </properties>

  <build>
    <plugins>
      <!-- Compiler Plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>${jdk.version}</source>
          <target>${jdk.version}</target>
          <encoding>${project.build.sourceEncoding}</encoding>
        </configuration>
      </plugin>
      <!-- License Plugin -->
      <!--  
        <plugin>
        <groupId>com.mycila.maven-license-plugin</groupId>
        <artifactId>maven-license-plugin</artifactId>
        <version>${plugin.license.version}</version>
        <executions>
        <execution>
        <phase>package</phase>
        <goals>
        <goal>check</goal>
        </goals>
        </execution>
        </executions>
        <configuration>
        <header>${plugin.license.headerPath}/license-header.txt</header>
        <failIfMissing>true</failIfMissing>
        <aggregate>true</aggregate>
        <excludes>
        <exclude>**/*.git*</exclude>
        <exclude>**/*.md</exclude>
        <exclude>**/*.xml</exclude>
        <exclude>**/*.properties</exclude>
        <exclude>**/LICENSE</exclude>
        <exclude>**/NOTICE</exclude>
        </excludes>
        <useDefaultMapping>true</useDefaultMapping>
        <strictCheck>true</strictCheck>
        </configuration>
        </plugin>
      -->
      <!-- Sources Plugin -->
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>bundle-sources</id>
            <phase>package</phase>
            <goals>
              <!-- produce source artifact for main project sources -->
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.jena</groupId>
        <artifactId>apache-jena-libs</artifactId>
        <version>3.5.0</version>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>org.xenei</groupId>
        <artifactId>junit-contracts</artifactId>
        <version>${ver.contract.tests}</version>
        <scope>test</scope>
      </dependency>   
    </dependencies>
  </dependencyManagement>
</project>
