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

  <groupId>org.apache.apache.resources</groupId>
  <artifactId>apache-resource-bundles</artifactId>
  <packaging>pom</packaging>

  <name>Apache Resource Bundles</name>
  <inceptionYear>2006</inceptionYear>

  <scm>
    <connection>scm:svn:https://svn.apache.org/repos/asf/maven/resources/tags/maven-parent-30/apache-resource-bundles</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/resources/tags/maven-parent-30/apache-resource-bundles</developerConnection>
    <url>https://svn.apache.org/viewcvs.cgi/maven/resources/tags/maven-parent-30/apache-resource-bundles</url>
  </scm>

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

  <ciManagement>
    <url>https://builds.apache.org/job/maven-project-resources/</url>
    <system>Jenkins</system>
  </ciManagement>

  <!-- There is no distributionManagement for this project. The site is a part of the main Maven site. -->

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-changes-plugin</artifactId>
          <configuration>
            <issueManagementSystems>
              <issueManagementSystem>JIRA</issueManagementSystem>
            </issueManagementSystems>
            <maxEntries>1000</maxEntries>
            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
            <versionPrefix>${project.artifactId}-</versionPrefix>
            <!-- Used by announcement-generate goal -->
<!-- TODO Which template should we use for Apache Resource Bundles?            
            <templateDirectory>org/apache/maven/shared</templateDirectory>
-->
            <!-- Used by announcement-mail goal -->
            <subject>[ANN] ${project.name} ${project.version} Released</subject>
            <toAddresses>
              <toAddress implementation="java.lang.String">announce@apache.org</toAddress>
              <toAddress implementation="java.lang.String">announce@maven.apache.org</toAddress>
              <toAddress implementation="java.lang.String">users@maven.apache.org</toAddress>
            </toAddresses>
            <ccAddresses>
              <ccAddress implementation="java.lang.String">dev@maven.apache.org</ccAddress>
            </ccAddresses>
            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->
            <fromDeveloperId>${apache.availid}</fromDeveloperId>
            <smtpHost>${smtp.host}</smtpHost>
          </configuration>
          <dependencies>
            <!-- Used by announcement-generate goal -->
<!-- Uncomment this when we have decided which template to use
            <dependency>
              <groupId>org.apache.maven.shared</groupId>
              <artifactId>maven-shared-resources</artifactId>
              <version>1</version>
            </dependency>
-->
          </dependencies>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <tagBase>https://svn.apache.org/repos/asf/maven/resources/tags</tagBase>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <!-- Turn this into a lifecycle -->
      <plugin>      
        <artifactId>maven-remote-resources-plugin</artifactId>        
        <executions>
          <execution>
            <goals>
              <goal>bundle</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
