<?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.apache.resources</groupId>
    <artifactId>apache-resource-bundles</artifactId>
    <version>4</version>
    <relativePath>../apache-resource-bundles/pom.xml</relativePath>
  </parent>

  <artifactId>apache-jar-txt-resource-bundle</artifactId>
  <version>1.5-SNAPSHOT</version>

  <name>Apache JAR (.txt) Resource Bundle</name>
  <description>
    An archive which contains templates for generating the necessary license files and notices for all Apache releases.
    Generated files use the .txt file extension as an alternative, no-extension files found in apache-jar-resource-bundle.
  </description>

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

</project>
