<?xml version="1.0"?>
<!--
 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>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>23</version>
  </parent>
  <groupId>${ivy.pom.groupId}</groupId>
  <artifactId>${ivy.pom.artifactId}</artifactId>
  <packaging>${ivy.pom.packaging}</packaging>
  <version>${version}</version>
  <name>Apache Nutch</name>
  <description>${ivy.pom.description}</description>
  <url>${ivy.pom.url}</url>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <scm>
    <developerConnection>scm:git:https://github.com/apache/nutch.git</developerConnection>
    <connection>scm:git:https://github.com/apache/nutch.git</connection>
    <url>https://github.com/apache/nutch.git</url>
  </scm>

  <pluginRepositories>
    <pluginRepository>
      <id>miredot</id>
      <name>MireDot Releases</name>
      <url>http://nexus.qmino.com/content/repositories/miredot</url>
    </pluginRepository>
    <pluginRepository> 
      <id>maven2</id> 
      <url>https://repo.maven.apache.org/maven2/</url> 
    </pluginRepository> 
  </pluginRepositories>

  <developers>
    <developer>
      <id>mattmann</id>
      <name>Chris A. Mattmann</name>
      <email>mattmann@apache.org</email>
    </developer>
    <developer>
      <id>jnioche</id>
      <name>Julien Nioche</name>
      <email>jnioche@apache.org</email>
    </developer>
    <developer>
      <id>lewismc</id>
      <name>Lewis John McGibbney</name>
      <email>lewismc@apache.org</email>
    </developer>
    <developer>
      <id>markus</id>
      <name>Markus Jelsma</name>
      <email>markus@apache.org</email>
    </developer>	
    <developer>
      <id>fenglu</id>
      <name>Feng Lu</name>
      <email>fenglu@apache.org</email>
    </developer>
    <developer>
      <id>kamaci</id>
      <name>Furkan KAMACI</name>
      <email>kamaci@apache.org</email>
    </developer>
    <developer>
      <id>kiranch</id>
      <name>Kiran Chitturi</name>
      <email>kiranch@apache.org</email>
    </developer>
    <developer>
      <id>tejasp</id>
      <name>Tejas Patil</name> 
      <email>tejasp@apache.org</email>
    </developer>
    <developer>
      <id>talat</id>
      <name>Talat Uyarer</name>
      <email>talat@apache.org</email>
    </developer>
    <developer>
      <id>snagel</id>
      <name>Sebastian Nagel</name>
      <email>snagel@apache.org</email>
    </developer>
    <developer>
      <id>thammegowda</id>
      <name>Thamme Gowda</name>
      <email>thammegowda@apache.org</email>
    </developer>
  </developers>

  <build>
    <sourceDirectory>src/java</sourceDirectory>
    <testSourceDirectory>src/test</testSourceDirectory>
    <testResources>
      <testResource>
        <directory>src/testresources</directory>
      </testResource>
    </testResources>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
          <configuration>
            <source>11</source>
            <target>11</target>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>com.qmino</groupId>
        <artifactId>miredot-plugin</artifactId>
        <version>2.4.0</version>
        <executions>
          <execution>
            <goals>
              <goal>restdoc</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <licence>cHJvamVjdHxvcmcuYXBhY2hlLm51dGNoLm51dGNofDIwMTktMTAtMzB8dHJ1ZXwtMSNNQ3dDRkJMb0FjM283ME1YRERRMkFJemY1QmxZUjAwK0FoUkJVMlJrVi81RlBQc25zMUZ2S2g0Q29weGFxZz09</licence>
          <restModel>
            <restFramework>
              <name>jax-rs</name>
            </restFramework>
          </restModel>
          <output>
            <html></html>
          </output>
          <!-- insert other configuration here (optional) -->
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
