<?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.
  -->
<archetype-descriptor name="nested-properties-main" partial="false" >

    <requiredProperties>
        <requiredProperty key="mainDefault">
            <defaultValue>1</defaultValue>
            <description>1</description>
        </requiredProperty>
        <requiredProperty key="aPropertyWithInner">
            <defaultValue>${mainNoDefault}</defaultValue>
            <description>1</description>
        </requiredProperty>
        <requiredProperty key="mainNoDefault">
            <description>1</description>
        </requiredProperty>
        <requiredProperty key="mainNoNothing"/>
    </requiredProperties>

    <fileSets/>

    <modules>
        <module artifactId="${rootArtifactId}-inner" nested="true" archetypeGroupId="archetypes" archetypeArtifactId="nested-properties-inner" archetypeVersion="1.0" />
    </modules>

</archetype-descriptor>
