<?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.dotnet</groupId>
  <artifactId>dotnet-modify-versions</artifactId>
  <packaging>pom</packaging>
  <version>${npandayVersion}</version>
  <name>dotnet-modify-versions</name>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pom-plugin</artifactId>
        <version>1.1-SNAPSHOT</version>
        <executions>
          <execution>
            <configuration>
              <target>.</target>
              <projectExcludes>imports/**</projectExcludes>
            </configuration>
            <id>alter-assembly-version</id>
            <phase>process-sources</phase>
            <goals>
              <goal>alter-version</goal>
            </goals>
          </execution>
          <execution>
            <configuration>
              <projectFile>misc/dotnet-repository-builder/pom-dotnet.xml</projectFile>
              <xpath>//project/version</xpath>
              <newValue>${pom.version}</newValue>
            </configuration>
            <id>alter-assembly-version-assemblies</id>
            <phase>process-sources</phase>
            <goals>
              <goal>alter-by-xpath</goal>
            </goals>
          </execution>
          <execution>
            <configuration>
              <projectFile>pom-dotnet.xml</projectFile>
              <xpath>//project/version</xpath>
              <newValue>${pom.version}</newValue>
            </configuration>
            <id>alter-assembly-version-assemblies-2</id>
            <phase>process-sources</phase>
            <goals>
              <goal>alter-by-xpath</goal>
            </goals>
          </execution>
          <execution>
            <configuration>
              <projectFile>pom.xml</projectFile>
              <xpath>//project/properties/mavenVersion</xpath>
              <newValue>${mavenVersion}</newValue>
            </configuration>
            <id>alter-assembly-version-assemblies-3</id>
            <phase>process-sources</phase>
            <goals>
              <goal>alter-by-xpath</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>