<?xml version="1.0"?>

<!--
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.
-->

<model xmlns="http://modello.codehaus.org/MODELLO/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.0.0 http://modello.codehaus.org/xsd/modello-1.0.0.xsd">
  <id>pluginRequirements</id>
  <name>PluginRequirements</name>
  <description><![CDATA[Model to specify plugin requirements.]]></description>
  <defaults>
    <default>
      <key>package</key>
      <value>org.apache.maven.plugin.plugin</value>
    </default>
  </defaults>
  <classes>
    <class>
      <name>Requirements</name>
      <description>Plugin requirements.</description>
      <version>1.0.0</version>
      <fields>
        <field>
          <name>maven</name>
          <description>The minimum version of Maven to run this plugin.</description>
          <version>1.0.0</version>
          <type>String</type>
          <identifier>true</identifier>
        </field>
        <field>
          <name>jdk</name>
          <description>The minimum version of the JDK to run this plugin.</description>
          <version>1.0.0</version>
          <type>String</type>
          <identifier>true</identifier>
        </field>
        <field>
          <name>memory</name>
          <description>The minimum memory needed to run this plugin.</description>
          <version>1.0.0</version>
          <type>String</type>
        </field>
        <field>
          <name>diskSpace</name>
          <description>The minimum diskSpace needed to run this plugin.</description>
          <version>1.0.0</version>
          <type>String</type>
        </field>
        <field>
          <name>others</name>
          <description>Others requirements properties.</description>
          <version>1.0.0</version>
          <type>Properties</type>
          <association xml.mapStyle="inline">
            <type>String</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
      </fields>
    </class>
  </classes>
</model>
