<?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>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>20</version>
  </parent>
  <groupId>org.apache.creadur.tentacles</groupId>
  <artifactId>apache-tentacles</artifactId>
  <packaging>jar</packaging>
  <version>0.1-SNAPSHOT</version>
  <name>Apache Tentacles</name>
  <description>Utility to download binaries from a remote repository and scan them for LICENSE and NOTICE files</description>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven.skins</groupId>
      <artifactId>maven-fluido-skin</artifactId>
      <version>1.9</version>
    </dependency>
    <dependency>
      <groupId>org.apache.rat</groupId>
      <artifactId>apache-rat-plugin</artifactId>
      <version>${apacheRatVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>${httpClientVersion}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.module</groupId>
      <artifactId>jackson-module-jaxb-annotations</artifactId>
      <version>2.4.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.14.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.14.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity</artifactId>
      <version>1.7</version>
    </dependency>
    <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
      <version>2.3.0</version>
    </dependency>
    <dependency>
      <groupId>org.codehaus.swizzle</groupId>
      <artifactId>swizzle-stream</artifactId>
      <version>1.6.2</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <javaVersion>9</javaVersion>
    <httpClientVersion>4.5.13</httpClientVersion>
    <apacheRatVersion>0.13</apacheRatVersion>
  </properties>
  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/TENTACLES</url>
  </issueManagement>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://ci-builds.apache.org/job/Creadur/job/Creadur-Tentacles/</url>
  </ciManagement>
  <mailingLists>
    <mailingList>
      <name>Whisker Development (Apache Creadur project)</name>
      <subscribe>dev-subscribe@creadur.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@creadur.apache.org</unsubscribe>
      <post>dev@creadur.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/creadur-dev/</archive>
    </mailingList>
    <mailingList>
      <name>WHisker Commits (Apache Creadur project)</name>
      <subscribe>commits-subscribe@creadur.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@creadur.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/creadur-commits/</archive>
    </mailingList>
  </mailingLists>
  <build>
    <defaultGoal>clean versions:display-dependency-updates versions:display-plugin-updates enforcer:display-info install</defaultGoal>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>${javaVersion}</source>
          <target>${javaVersion}</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <!-- This checks the bytecode version of the dependencies transitively -->
            <id>enforce-bytecode-version</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <enforceBytecodeVersion>
                  <maxJdkVersion>${javaVersion}</maxJdkVersion>
                </enforceBytecodeVersion>
                <requireMavenVersion>
                  <version>3.0.5</version>
                </requireMavenVersion>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>1.0-beta-5</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <appendAssemblyId>true</appendAssemblyId>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>org.apache.creadur.tentacles.Main</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.8.2</version>
        <configuration>
          <outputEncoding>${project.build.sourceEncoding}</outputEncoding>
          <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
          <relativizeDecorationLinks>false</relativizeDecorationLinks>
          <!-- reporting plugins are configured according to new mvn3 standard -->
          <!-- Until Maven finds a way to allow inheritance, duplicated in plugin4maven -->
          <reportPlugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-checkstyle-plugin</artifactId>
              <version>2.12.1</version>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <version>2.10.4</version>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jxr-plugin</artifactId>
              <version>2.4</version>
              <configuration>
                <aggregate>true</aggregate>
                <linkJavadoc>true</linkJavadoc>
              </configuration>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-report-plugin</artifactId>
              <version>2.17</version>
            </plugin>
            <plugin>
              <artifactId>maven-pmd-plugin</artifactId>
              <!-- Later versions require Java 1.6+ -->
              <version>3.1</version>
              <configuration>
                <linkXRef>true</linkXRef>
                <sourceEncoding>utf-8</sourceEncoding>
                <minimumTokens>100</minimumTokens>
                <targetJdk>${target.jdk}</targetJdk>
                <excludes>
                  <exclude>**/generated/**/*.java</exclude>
                  <exclude>**/target/clover/**/*.java</exclude>
                </excludes>
              </configuration>
            </plugin>
            <!-- read changes.xml -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-changes-plugin</artifactId>
              <version>2.10</version>
              <reportSets>
                <reportSet>
                  <reports>
                    <report>changes-report</report>
                  </reports>
                </reportSet>
              </reportSets>
            </plugin>
            <!-- jdepend plugin -->
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>jdepend-maven-plugin</artifactId>
              <version>2.0</version>
            </plugin>
            <!-- cobertura plugin -->
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>cobertura-maven-plugin</artifactId>
              <version>2.6</version>
            </plugin>
            <!-- catch code tags -->
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>taglist-maven-plugin</artifactId>
              <version>2.4</version>
              <configuration>
                <tags>
                  <tag>TODO</tag>
                  <tag>todo</tag>
                  <tag>FIXME</tag>
                  <tag>fixme</tag>
                  <tag>REFACTOR</tag>
                  <tag>refactor</tag>
                  <tag>REVIEW</tag>
                  <tag>review</tag>
                  <tag>@todo</tag>
                  <tag>@deprecated</tag>
                </tags>
              </configuration>
            </plugin>
            <!-- enable later with a findbugs version that works fine with JDK 1.6
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>findbugs-maven-plugin</artifactId>
              <version>2.5.5</version>
            </plugin-->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-project-info-reports-plugin</artifactId>
              <version>2.7</version>
            </plugin>
            <plugin>
              <groupId>org.apache.rat</groupId>
              <artifactId>apache-rat-plugin</artifactId>
              <version>${apacheRatVersion}</version>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>${apacheRatVersion}</version>
          <configuration>
            <excludes>
              <exclude>.travis.yml</exclude>
              <exclude>README*</exclude>
              <exclude>src/main/resources/licenses/*</exclude>
            </excludes>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/creadur-tentacles.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/creadur-tentacles.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf?p=creadur-tentacles.git</url>
  </scm>
  <licenses>
    <license>
      <name>Apache License, Version 2</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
      <comments>An OSI approved open source license.</comments>
    </license>
  </licenses>
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org</url>
  </organization>
</project>
