<?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>
        <relativePath />
    </parent>

    <groupId>org.apache.aries.rsa</groupId>
    <artifactId>org.apache.aries.rsa.main</artifactId>
    <version>1.16.1</version>
    <packaging>pom</packaging>
    <name>Aries Remote Service Admin Main</name>

    <scm>
        <connection>scm:git:git@github.com:apache/aries-rsa.git</connection>
        <developerConnection>scm:git:git@github.com:apache/aries-rsa.git</developerConnection>
        <tag>org.apache.aries.rsa-1.17.0</tag>
    </scm>

    <issueManagement>
        <system>jira</system>
        <url>https://issues.apache.org/jira/browse/ARIES</url>
    </issueManagement>

    <prerequisites>
        <maven>3.2</maven>
    </prerequisites>

    <inceptionYear>2008</inceptionYear>

    <modules>
        <module>parent</module>
        <module>spi</module>
        <module>rsa</module>
        <module>eapub</module>
        <module>topology-manager</module>
        <module>provider</module>
        <module>discovery</module>
        <module>examples</module>
        <module>repository</module>
        <module>features</module>
        <module>itests</module>
    </modules>

    <profiles>
        <profile>
            <id>rat</id>
            <build>
                <plugins>

                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <defaultGoal>install</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.3</version>
                    <configuration>
                        <releaseProfiles>apache-release</releaseProfiles>
                        <autoVersionSubmodules>true</autoVersionSubmodules>
                        <mavenExecutorId>forked-path</mavenExecutorId>
                        <tagNameFormat>org.apache.aries.rsa-@{project.version}</tagNameFormat>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <aggregate>true</aggregate>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>
