<?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>
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.maven.its.mng4342</groupId>
  <artifactId>test</artifactId>
  <version>0.1</version>
  <packaging>jar</packaging>

  <name>Maven Integration Test :: MNG-4342</name>
  <description>Test that multiple goals within a single execution get their default configuration properly injected. In
    particular, the default values for one goal should not influence the default values of the other goal.</description>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.its.plugins</groupId>
        <artifactId>maven-it-plugin-configuration</artifactId>
        <version>2.1-SNAPSHOT</version>
        <configuration>
          <propertiesFile>target/config1.properties</propertiesFile>
          <outputFile>target/config2.properties</outputFile>
        </configuration>
        <executions>
          <execution>
            <id>test</id>
            <goals>
              <!-- both of these goals have a parameter named "defaultParam" but with different default values -->
              <goal>config</goal>
              <goal>append-config</goal>
            </goals>
            <phase>validate</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
