<?xml version="1.0" encoding="UTF-8"?>
<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>org.eclipse.wst.xml.xpath2.processor</artifactId>
   <packaging>eclipse-plugin</packaging>
   <version>2.0.0-SNAPSHOT</version>
   <name>PsychoPath XPath 2.0 Processor</name>

   <parent>
      <groupId>org.eclipse.wst.xml.xpath2</groupId>
      <artifactId>org.eclipse.wst.xml.xpath2-parent</artifactId>
      <version>2.0.0-SNAPSHOT</version>
      <relativePath>../../development/athena/org.eclipse.wst.xml.xpath2.releng
      </relativePath>
   </parent>

   <build>
      <sourceDirectory>src</sourceDirectory>
      <pluginManagement>
         <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-pmd-plugin</artifactId>
               <version>2.5</version>
            </plugin>
         </plugins>
      </pluginManagement>
      <plugins>
	      <plugin>
	        <groupId>org.sonatype.tycho</groupId>
	        <artifactId>maven-osgi-compiler-plugin</artifactId>
	        <version>${tycho-version}</version>
	        <configuration>
	          <compilerId>jdt</compilerId>
	          <usePdeSourceRoots>true</usePdeSourceRoots>
	          <source>1.5</source>
	          <target>jsr14</target>
	        </configuration>
	      </plugin>

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.7</version>
         </plugin>
      </plugins>
   </build>
</project>
