<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-parent</artifactId>
    <version>30</version>
  </parent>

  <groupId>org.apache.maven.resolver</groupId>
  <artifactId>maven-resolver</artifactId>
  <version>1.1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Maven Artifact Resolver</name>
  <description>
    The parent and aggregator for the repository system.
  </description>
  <url>https://maven.apache.org/resolver/</url>
  <inceptionYear>2010</inceptionYear>

  <scm>
    <connection>scm:git:https://git-wip-us.apache.org/repos/asf/maven-resolver.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/maven-resolver.git</developerConnection>
    <url>https://github.com/apache/maven-resolver/tree/${project.scm.tag}</url>
    <tag>master</tag>
  </scm>
  <issueManagement>
    <system>jira</system>
    <url>https://issues.apache.org/jira/browse/MRESOLVER</url>
  </issueManagement>
  <ciManagement>
    <system>Jenkins</system>
    <url>https://builds.apache.org/job/maven-resolver/</url>
  </ciManagement>
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/maven/components/${maven.site.path}</url>
    </site>
  </distributionManagement>

  <properties>
    <javaVersion>7</javaVersion>
    <surefire.redirectTestOutputToFile>true</surefire.redirectTestOutputToFile>
    <maven.site.path>resolver-archives/resolver-LATEST</maven.site.path>
    <checkstyle.violation.ignore>UnusedImports,LineLength,InnerAssignment,MagicNumber,AvoidNestedBlocks,ParameterNumber,MethodLength,MemberName</checkstyle.violation.ignore>
    <sisuVersion>0.3.3</sisuVersion>
    <slf4jVersion>1.7.25</slf4jVersion>
  </properties>

  <modules>
    <!-- NOTE: Be sure to update the bin assembly descriptor as well if the module list changes -->
    <module>maven-resolver-api</module>
    <module>maven-resolver-spi</module>
    <module>maven-resolver-util</module>
    <module>maven-resolver-impl</module>
    <module>maven-resolver-test-util</module>
    <module>maven-resolver-connector-basic</module>
    <module>maven-resolver-transport-classpath</module>
    <module>maven-resolver-transport-file</module>
    <module>maven-resolver-transport-http</module>
    <module>maven-resolver-transport-wagon</module>
  </modules>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-spi</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-util</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-impl</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-connector-basic</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-test-util</artifactId>
        <version>${project.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>1.3</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.codehaus.plexus</groupId>
        <artifactId>plexus-component-annotations</artifactId>
        <version>1.7.1</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.eclipse.sisu</groupId>
        <artifactId>org.eclipse.sisu.inject</artifactId>
        <version>${sisuVersion}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.sisu</groupId>
        <artifactId>org.eclipse.sisu.plexus</artifactId>
        <version>${sisuVersion}</version>
        <exclusions>
          <exclusion>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.sonatype.sisu</groupId>
        <artifactId>sisu-guice</artifactId>
        <version>3.2.6</version>
        <classifier>no_aop</classifier>
        <exclusions>
          <exclusion>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4jVersion}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <detectOfflineLinks>false</detectOfflineLinks>
            <links>
              <link>http://download.oracle.com/javase/6/docs/api/</link>
            </links>
            <tags>
              <tag>
                <name>noextend</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>noimplement</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>noinstantiate</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>nooverride</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>noreference</name>
                <placement>a</placement>
                <head>Restriction:</head>
              </tag>
              <tag>
                <name>provisional</name>
                <placement>a</placement>
                <head>Provisional:</head>
              </tag>
            </tags>
            <groups>
              <group>
                <title>API - org.apache.maven.resolver</title>
                <packages>org.eclipse.aether*</packages>
              </group>
              <group>
                <title>SPI - org.apache.maven.resolver.spi</title>
                <packages>org.eclipse.aether.spi*</packages>
              </group>
              <group>
                <title>Utilities - org.apache.maven.resolver.util</title>
                <packages>org.eclipse.aether.util*</packages>
              </group>
              <group>
                <title>Repository Basic Connector - org.apache.maven.resolver.connector.basic</title>
                <packages>org.eclipse.aether.connector.basic*</packages>
              </group>
              <group>
                <title>Transporters - org.apache.maven.resolver.transport.*</title>
                <packages>org.eclipse.aether.transport*</packages>
              </group>
              <group>
                <title>Implementation - org.apache.maven.resolver.impl</title>
                <packages>org.eclipse.aether.impl*</packages>
              </group>
              <group>
                <title>Internals</title>
                <packages>org.eclipse.aether.internal*</packages>
              </group>
            </groups>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <autoVersionSubmodules>true</autoVersionSubmodules>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <argLine>-Xmx128m</argLine>
            <redirectTestOutputToFile>${surefire.redirectTestOutputToFile}</redirectTestOutputToFile>
            <systemPropertyVariables>
              <java.io.tmpdir>${project.build.directory}/surefire-tmp</java.io.tmpdir>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-component-metadata</artifactId>
          <executions>
            <execution>
              <id>generate-components-xml</id>
              <phase>process-classes</phase>
              <goals>
                <goal>generate-metadata</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.eclipse.sisu</groupId>
          <artifactId>sisu-maven-plugin</artifactId>
          <version>${sisuVersion}</version>
          <executions>
            <execution>
              <id>generate-index</id>
              <phase>process-classes</phase>
              <goals>
                <goal>main-index</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes combine.children="append">
              <exclude>src/test/resources/**/*.ini</exclude>
              <exclude>src/test/resources/**/*.txt</exclude>
              <exclude>src/test/resources/ssl/*-store</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin><!-- TODO remove when upgrading to parent pom 31 -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>extra-enforcer-rules</artifactId>
            <version>1.0-beta-6</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>clirr</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>clirr-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>check-api-compat</id>
                <phase>verify</phase>
                <goals>
                  <goal>check-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>reporting</id>
      <reporting>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <linksource>true</linksource>
              <notimestamp>true</notimestamp>
              <quiet>true</quiet>
            </configuration>
            <reportSets>
              <reportSet>
                <id>aggregate</id>
                <inherited>false</inherited>
                <reports>
                  <report>aggregate</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <reportSets>
              <reportSet>
                <id>aggregate</id>
                <inherited>false</inherited>
                <reports>
                  <report>aggregate</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <profile>
      <id>m2e</id>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>1.0.0</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.eclipse.sisu</groupId>
                        <artifactId>sisu-maven-plugin</artifactId>
                        <versionRange>[${sisuVersion},)</versionRange>
                        <goals>
                          <goal>test-index</goal>
                          <goal>main-index</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>java9-module</id>
      <activation>
        <property>
          <name>AutomaticModuleName</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <configuration>
                <archive>
                  <manifestEntries>
                    <Automatic-Module-Name>${AutomaticModuleName}</Automatic-Module-Name>
                  </manifestEntries>
                </archive>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>
</project>
