<?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-alpha-11</version>
  </parent>

  <artifactId>maven-plugin-api</artifactId>

  <name>Maven Plugin API</name>
  <description>The API for plugins - Mojos - development.</description>

  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-api-plugin</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-model</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-artifact</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.sisu</groupId>
      <artifactId>org.eclipse.sisu.plexus</artifactId>
      <exclusions>
        <exclusion>
          <groupId>*</groupId>
          <artifactId>*</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-classworlds</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.resolver</groupId>
      <artifactId>maven-resolver-api</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.modello</groupId>
        <artifactId>modello-maven-plugin</artifactId>
        <configuration>
          <velocityBasedir>${project.basedir}/../src/mdo</velocityBasedir>
        </configuration>
        <executions>
          <execution>
            <id>velocity-lifecycle</id>
            <goals>
              <goal>velocity</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>reader-stax.vm</template>
                <template>writer-stax.vm</template>
              </templates>
              <params>
                <param>packageModelV4=org.apache.maven.api.plugin.descriptor.lifecycle</param>
                <param>packageToolV4=org.apache.maven.plugin.lifecycle.io</param>
              </params>
              <models>
                <model>../api/maven-api-plugin/src/main/mdo/lifecycle.mdo</model>
              </models>
              <version>1.0.0</version>
            </configuration>
          </execution>
          <execution>
            <id>velocity-plugin</id>
            <goals>
              <goal>velocity</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <templates>
                <template>reader-stax.vm</template>
                <template>writer-stax.vm</template>
              </templates>
              <params>
                <param>packageModelV3=org.apache.maven.plugin.descriptor</param>
                <param>packageModelV4=org.apache.maven.api.plugin.descriptor</param>
                <param>packageToolV4=org.apache.maven.plugin.descriptor.io</param>
              </params>
              <models>
                <model>../api/maven-api-plugin/src/main/mdo/plugin.mdo</model>
              </models>
              <version>2.0.0</version>
            </configuration>
          </execution>
          <execution>
            <id>modello-site-docs</id>
            <phase>none</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.siom79.japicmp</groupId>
        <artifactId>japicmp-maven-plugin</artifactId>
        <configuration>
          <parameter>
            <excludes>
              <exclude>org.apache.maven.monitor.logging.DefaultLog</exclude>
              <exclude>org.apache.maven.plugin.lifecycle</exclude>
              <exclude>org.apache.maven.plugin.descriptor.PluginDescriptor#getLifecycleMapping(java.lang.String)</exclude>
            </excludes>
          </parameter>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
