<?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>24-SNAPSHOT</version>
    <relativePath>../../pom/maven/pom.xml</relativePath>
  </parent>

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

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


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

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

  <url>${siteUrl}</url>
  <properties>
    <siteDeployUrl>scp://people.apache.org/www/maven.apache.org/apache-resource-bundles/apache-resource-bundles</siteDeployUrl>
    <siteDeployId>apache.website</siteDeployId>
    <siteUrl>http://maven.apache.org/apache-resource-bundles/apache-resource-bundles</siteUrl>
  </properties>
  <distributionManagement>
    <site>
      <id>${siteDeployId}</id>
      <url>${siteDeployUrl}</url>
    </site>
  </distributionManagement>

  <build>
    <pluginManagement>
      <plugins>
        <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>
