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

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

    <scm>
        <connection>scm:git:http://git-wip-us.apache.org/repos/asf/aries-rsa.git</connection>
        <developerConnection>scm:git:http://git-wip-us.apache.org/repos/asf/aries-rsa.git</developerConnection>
        <tag>org.apache.aries.rsa-1.12.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>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludes>
                        <exclude>**/target/**/*</exclude>
                        <exclude>**/appended-resources/**/*</exclude>
                        <exclude>**/dependency-reduced-pom.xml</exclude>
                        <exclude>**/velocity.log</exclude>
                        <exclude>**/DEPENDENCIES</exclude>
                        <!-- exclude IntelliJ IDEA generated files -->
                        <exclude>**/*.iml</exclude>
                        <exclude>**/*.ipr</exclude>
                        <exclude>**/*.iws</exclude>
                        <exclude>**/.idea/**/*</exclude>
                        <!-- exclude Eclipse IDE generated files -->
                        <exclude>**/.project</exclude>
                        <exclude>**/.classpath</exclude>
                        <exclude>**/.settings/**</exclude>
                        <exclude>**/eclipse-classes/**/*</exclude>
                        <!-- manifest files don't support comments so don't contain 
                            the ASL2.0 header -->
                        <exclude>**/APPLICATION.MF</exclude>
                        <exclude>**/MANIFEST.MF</exclude>
                        <exclude>**/*.MF</exclude>
                        <!--RAT doesn't seem to recognize MIT style licenses -->
                        <exclude>manual/src/styles/print.css</exclude>
                        <!-- RAT doesn't recognize BSD license in transaction-manager 
                            logger -->
                        <exclude>**/objectweb/howl/log/Logger.java</exclude>
                        <exclude>.gitignore</exclude>
                        <exclude>osgi.bnd</exclude>
                        <exclude>README.md</exclude>
                        <exclude>*.cfg</exclude>
                        <exclude>derby.log</exclude>
                        <exclude>**/*.sql</exclude>
                        <exclude>**/README.md</exclude>
                        <exclude>**/Readme.md</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.2</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.15</version>
                <configuration>
                    <aggregate>true</aggregate>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>
