<?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.
  -->
<metadata>
  <plugins>
    <plugin>
      <name>Maven TEST Complete Plugin</name>
      <prefix>archetypes</prefix>
      <artifactId>basic</artifactId>
    </plugin>
    <plugin>
      <name>Maven TEST Partial Plugin</name>
      <prefix>archetypes</prefix>
      <artifactId>partial</artifactId>
    </plugin>
    <plugin>
      <name>Maven TEST Site Plugin</name>
      <prefix>archetypes</prefix>
      <artifactId>site</artifactId>
    </plugin>
  </plugins>
</metadata>