<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2006 The Apache Software Foundation.
  ~
  ~ Licensed 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.
-->
<archetype-descriptor id="test" >

    <requiredProperties>
        <requiredProperty key="property-with-default-1" >
            <defaultValue>default-value</defaultValue>
        </requiredProperty>
        <requiredProperty key="property-with-default-2" >
            <defaultValue>default-value</defaultValue>
        </requiredProperty>
        <requiredProperty key="property-with-default-3" >
            <defaultValue>default-value</defaultValue>
        </requiredProperty>
        <requiredProperty key="property-with-default-4" >
            <defaultValue>default-value</defaultValue>
        </requiredProperty>
        <requiredProperty key="property-without-default-1" >
        </requiredProperty>
        <requiredProperty key="property-without-default-2" >
        </requiredProperty>
        <requiredProperty key="property-without-default-3" >
        </requiredProperty>
        <requiredProperty key="property-without-default-4" >
        </requiredProperty>
    </requiredProperties>

    <fileSets>
        <fileSet filtered="true" packaged="true" >
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.java</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="true" >
            <directory>src/main/c</directory>
            <includes>
                <include>**/*.c</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="true" >
            <directory>src/test/java</directory>
            <includes>
                <include>**/*.java</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="true" >
            <directory>src/test/c</directory>
            <includes>
                <include>**/*.c</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="false" >
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="false" >
            <directory>src/main/mdo</directory>
            <includes>
                <include>**/*.mdo</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="false" >
            <directory>src/test/resources</directory>
            <includes>
                <include>**/*.properties</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="false" >
            <directory>src/test/mdo</directory>
            <includes>
                <include>**/*.mdo</include>
            </includes>
        </fileSet>
    </fileSets>

</archetype-descriptor>
