<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>KorAP-modules</groupId> <artifactId>KorAP-core-modules</artifactId> 
       <version>1.1</version> </parent> -->

  <groupId>de.ids_mannheim.korap</groupId>
  <artifactId>Koral</artifactId>
  <version>0.21</version>
  <packaging>jar</packaging>
  <name>Koral</name>
  <url>http://maven.apache.org</url>
  <repositories>
    <repository>
      <id>id-maven-repo</id>
      <url>http://maven.indexdata.com</url>
    </repository>
  </repositories>
  <dependencies>
    <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>antlr4-runtime</artifactId>
      <version>4.1</version>
    </dependency>
    <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>antlr4-maven-plugin</artifactId>
      <version>4.1</version>
    </dependency>
    <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>antlr-runtime</artifactId>
      <version>3.5</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>15.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.3.3</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.3.3</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.3.3</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.6</version>
    </dependency>
    <dependency>
      <groupId>org.z3950.zing</groupId>
      <artifactId>cql-java</artifactId>
      <version>1.12</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>0.11.8</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>apache-log4j-extras</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.5</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.5</version>
    </dependency>
  </dependencies>
  <build>
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
    <outputDirectory>${basedir}/target/classes</outputDirectory>
    <plugins>
     <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <compilerVersion>1.7</compilerVersion>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
      <!--
	  Formatter plugin for Eclipse based coding conventions
	  http://maven-java-formatter-plugin.googlecode.com/svn/site/0.4/usage.html
      -->      
      <plugin>
	<groupId>com.googlecode.maven-java-formatter-plugin</groupId>
	<artifactId>maven-java-formatter-plugin</artifactId>
	<version>0.4</version>
	<configuration>
	  <configFile>${project.basedir}/Format.xml</configFile>
	  <overrideConfigCompilerVersion>true</overrideConfigCompilerVersion>
	  <compilerSource>1.7</compilerSource>
	  <compilerCompliance>1.7</compilerCompliance>
	  <compilerTargetPlatform>1.7</compilerTargetPlatform>
	</configuration>
      </plugin>
      <plugin>
	<artifactId>maven-dependency-plugin</artifactId>
	<executions>
	  <execution>
	    <phase>install</phase>
	    <goals>
	      <goal>copy-dependencies</goal>
	    </goals>
	    <configuration>
	      <outputDirectory>${project.build.directory}/../lib</outputDirectory>
	    </configuration>
	  </execution>
	</executions>
      </plugin>
      <plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>2.5</version>
	<configuration>
	  <archive>
	    <manifest>
	      <addClasspath>true</addClasspath>
	      <classpathPrefix>../lib/</classpathPrefix>
	      <mainClass>de.ids_mannheim.korap.query.serialize.QuerySerializer</mainClass>
	    </manifest>
	  </archive>
	</configuration>
      </plugin>
      <plugin>
	<!-- This plugin will help to build the ANTLR4 grammar on the fly. The 
	     recipe is based on http://stackoverflow.com/questions/15310628/ customize-maven-to-automatically-create-antlr4-grammar-java-files-on-build -->
	<groupId>org.antlr</groupId>
	<artifactId>antlr4-maven-plugin</artifactId>
	<version>4.1</version>
	<executions>
	  <execution>
	    <id>poliqarpplus</id>
	    <goals>
	      <goal>antlr4</goal>
	    </goals>
	    <configuration>
	      <sourceDirectory>${basedir}/src/main/antlr/poliqarpplus</sourceDirectory>
	      <outputDirectory>${basedir}/src/main/java/de/ids_mannheim/korap/query/parse/poliqarpplus</outputDirectory>
	      <libDirectory>${basedir}/src/main/antlr/poliqarpplus</libDirectory>
	    </configuration>
	    <phase>generate-sources</phase>
	  </execution>
	  <execution>
	    <id>annis</id>
	    <goals>
	      <goal>antlr4</goal>
	    </goals>
	    <configuration>
	      <sourceDirectory>${basedir}/src/main/antlr/annis</sourceDirectory>
	      <outputDirectory>${basedir}/src/main/java/de/ids_mannheim/korap/query/parse/annis</outputDirectory>
	      <libDirectory>${basedir}/src/main/antlr/annis</libDirectory>
	    </configuration>
	    <phase>generate-sources</phase>
	  </execution>
	  <execution>
	    <id>collection</id>
	    <goals>
	      <goal>antlr4</goal>
	    </goals>
	    <configuration>
	      <sourceDirectory>${basedir}/src/main/antlr/collection</sourceDirectory>
	      <outputDirectory>${basedir}/src/main/java/de/ids_mannheim/korap/query/parse/collection</outputDirectory>
	      <libDirectory>${basedir}/src/main/antlr/collection</libDirectory>
	    </configuration>
	    <phase>generate-sources</phase>
	  </execution>
	</executions>
      </plugin>
      <plugin>
	<!-- This plugin will help to build the ANTLR3 grammar on the fly. The 
	     recipe is based on http://stackoverflow.com/questions/15310628/ customize-maven-to-automatically-create-antlr4-grammar-java-files-on-build -->
	<groupId>org.antlr</groupId>
	<artifactId>antlr3-maven-plugin</artifactId>
	<version>3.5.1</version>
	<configuration>
	  <sourceDirectory>${basedir}/src/main/antlr/cosmas</sourceDirectory>
	  <outputDirectory>${basedir}/src/main/java/de/ids_mannheim/korap/query/parse/cosmas</outputDirectory>
	  <libDirectory>${basedir}/src/main/antlr</libDirectory>
	</configuration>
	
	<executions>
	  <execution>
	    <goals>
	      <goal>antlr</goal>
	    </goals>
	    <phase>generate-sources</phase>
	  </execution>
	</executions>
	
      </plugin>
      <plugin>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>2.3.2</version>
	<configuration>
	  <source>1.7</source>
	  <target>1.7</target>
	  <!-- excludes> <exclude>**/CosmasTree.java</exclude> </excludes -->
	</configuration>
      </plugin>
    </plugins>
  </build>
</project>
