<?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>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-changes-plugin-test</artifactId>
  <version>1.1</version>
  <name>Maven</name>
  <packaging>jar</packaging>
  <description>Test Announcement Custom template</description>
  <url>http://maven.apache.org/plugins/maven-changes-plugin/</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <issueManagement>
    <system>jira</system>
    <url>http://localhost</url>
  </issueManagement>
  <properties>
    <changesPluginVersion>@pom.version@</changesPluginVersion>
  </properties>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-changes-plugin</artifactId>
          <version>${changesPluginVersion}</version>
          <configuration>
            <failOnError>true</failOnError>
          </configuration>          
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>${changesPluginVersion}</version>
        <executions>
          <execution>
            <id>validate-changes</id>
            <phase>validate</phase>
            <goals>
              <goal>changes-validate</goal>
            </goals>
            <configuration>
              <failOnError>true</failOnError>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <template>test-announce.vm</template>
          <templateDirectory>template-directory</templateDirectory>
        </configuration>        
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>@sitePluginVersion@</version>
      </plugin>      
    </plugins>
  </build>
  <reporting>
    <excludeDefaults>true</excludeDefaults>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>${changesPluginVersion}</version>
        <configuration>
          <template>test-announce.vm</template>
          <templateDirectory>template-directory</templateDirectory>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
  
</project>
