<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven</artifactId>
    <version>4.0.0-beta-1-SNAPSHOT</version>
  </parent>

  <artifactId>maven-settings</artifactId>

  <name>Maven Settings</name>
  <description>Maven Settings model.</description>

  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-api-settings</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-api-xml</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-api-meta</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-xml-impl</artifactId>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-xml</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.woodstox</groupId>
      <artifactId>woodstox-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.codehaus.woodstox</groupId>
      <artifactId>stax2-api</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.modello</groupId>
        <artifactId>modello-maven-plugin</artifactId>
        <configuration>
          <version>2.0.0</version>
          <basedir>${project.basedir}/../api/maven-api-settings</basedir>
          <velocityBasedir>${project.basedir}/../src/mdo</velocityBasedir>
          <models>
            <model>src/main/mdo/settings.mdo</model>
          </models>
          <params>
            <param>forcedIOModelVersion=1.2.0</param>
            <param>packageModelV3=org.apache.maven.settings</param>
            <param>packageModelV4=org.apache.maven.api.settings</param>
            <param>packageToolV4=org.apache.maven.settings.v4</param>
          </params>
        </configuration>
        <executions>
          <execution>
            <id>velocity</id>
            <goals>
              <goal>velocity</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>merger.vm</template>
                <template>transformer.vm</template>
                <template>reader-stax.vm</template>
                <template>writer-stax.vm</template>
              </templates>
              <params combine.children="append">
                <param>locationTracking=true</param>
                <param>generateLocationClasses=true</param>
              </params>
            </configuration>
          </execution>
          <execution>
            <id>v3</id>
            <goals>
              <goal>velocity</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <version>1.3.0</version>
              <templates>
                <template>model-v3.vm</template>
              </templates>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.siom79.japicmp</groupId>
        <artifactId>japicmp-maven-plugin</artifactId>
        <configuration>
          <parameter>
            <excludes>
              <exclude>org.apache.maven.settings.io.xpp3.SettingsXpp3Reader#contentTransformer</exclude>
              <exclude>org.apache.maven.settings.RuntimeInfo</exclude>
              <exclude>org.apache.maven.settings.Settings#setModelEncoding(java.lang.String):METHOD_REMOVED</exclude>
            </excludes>
          </parameter>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
