<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>jena-maven-tools</artifactId>
  <packaging>maven-plugin</packaging>
  <version>3.0.0</version>
  <name>Apache Jena - Maven Plugins, including schemagen</name>
  <description>Plugins for Apache Maven to perform source management activities,
  such as generating Java files from RDF vocabulary sources using
  Jena's schemagen tool</description>
  <url>http://apache.jena.org</url>

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

  <developers>
    <developer>
      <id>ian</id>
      <name>Ian Dickinson</name>
      <email>ijd@apache.org</email>
      <timezone>+0</timezone>
    </developer>
    <developer>
      <id>bimargulies</id>
      <name>Benson Margulies</name>
      <email>bimargulies@apache.org</email>
      <timezone>+5</timezone>
    </developer>
  </developers>
  <licenses>
    <license>
      <name>Apache 2</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>A business-friendly OSS license</comments>
    </license>
  </licenses>
  <organization>
    <name>Apache</name>
    <url>http://www.apache.org</url>
  </organization>

  <properties>
    <jenaCoreVersion>${project.version}</jenaCoreVersion>
    <mavenVersion>3.0.4</mavenVersion>
  </properties>

  <build>
    <plugins>
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-plugin-plugin</artifactId>
	<configuration>
	  <!-- see http://jira.codehaus.org/browse/MNG-5346 -->
	  <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
	</configuration>
	<executions>
	  <execution>
	    <id>mojo-descriptor</id>
	    <goals>
	      <goal>descriptor</goal>
	    </goals>
	  </execution>
	  <!-- if you want to generate help goal -->
	  <execution>
	    <id>help-goal</id>
	    <goals>
	      <goal>helpmojo</goal>
	    </goals>
	  </execution>
	</executions>
      </plugin>
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-javadoc-plugin</artifactId>
	<configuration>
	  <version>true</version>
	  <show>public</show>
	  <quiet>true</quiet>
	  <encoding>UTF-8</encoding>
	  <windowtitle>Apache Jena Maven Tools</windowtitle>
	  <doctitle>Apache Jena Maven Tools ${project.version}</doctitle>
	  <bottom>Licenced under the Apache License, Version 2.0</bottom>
	</configuration>
      </plugin>
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-invoker-plugin</artifactId>
	<configuration>
	  <debug>true</debug>
	  <localRepositoryPath>${project.build.directory}/it-repo</localRepositoryPath>
	  <postBuildHookScript>verify</postBuildHookScript>
	  <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
	</configuration>
	<executions>
	  <execution>
	    <id>integration-test</id>
	    <goals>
	      <goal>install</goal>
	      <goal>run</goal>
	    </goals>
	  </execution>
	</executions>
	<dependencies>
	  <dependency> <!-- remove when using maven-invoker-plugin 1.10 -->
	    <groupId>org.apache.maven.shared</groupId>
	    <artifactId>maven-invoker</artifactId>
	    <version>2.2</version>
	  </dependency>
	  <dependency>
	    <groupId>org.apache.maven.shared</groupId>
	    <artifactId>maven-verifier</artifactId>
	    <version>1.2</version>
	    <exclusions>
	      <exclusion>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
	      </exclusion>
	    </exclusions>
	  </dependency>
	</dependencies>
      </plugin>
      <plugin>
	<groupId>org.apache.rat</groupId>
	<artifactId>apache-rat-plugin</artifactId>
	<configuration>
	  <excludes>
	    <exclude>**/target/**/*</exclude>
	    <exclude>**/*.log</exclude>
	  </excludes>
	</configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.2</version>
      <exclusions>
	<exclusion>
	  <groupId>org.codehaus.plexus</groupId>
	  <artifactId>plexus-utils</artifactId>
	</exclusion>
	<exclusion>
	  <groupId>org.apache.maven</groupId>
	  <artifactId>maven-artifact</artifactId>
	</exclusion>
      </exclusions>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>${mavenVersion}</version>
      <exclusions>
	<exclusion>
	  <groupId>org.codehaus.plexus</groupId>
	  <artifactId>plexus-utils</artifactId>
	</exclusion>
	<exclusion>
	  <artifactId>org.eclipse.sisu.plexus</artifactId>
	  <groupId>org.eclipse.sisu</groupId>
	</exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-core</artifactId>
      <version>3.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <version>3.0.15</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-verifier</artifactId>
      <version>1.2</version>
      <exclusions>
	<exclusion>
	  <groupId>junit</groupId>
	  <artifactId>junit</artifactId>
	</exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-core</artifactId>
      <version>${mavenVersion}</version>
      <scope>provided</scope>
      <exclusions>
	<exclusion>
	  <groupId>org.codehaus.plexus</groupId>
	  <artifactId>plexus-utils</artifactId>
	</exclusion>
      </exclusions>
    </dependency>
  </dependencies>
  <reporting>
    <plugins>
      <plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>jxr-maven-plugin</artifactId>
	<version>1.5</version>
      </plugin>
      <plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>surefire-report-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>
</project>
