<?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 xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"

                      name="myfaces-archetype-jsfcomponents" partial="false">

  <requiredProperties/>

  <modules>
      <module dir="core" name="My JSF Components Library">
          <fileSets>
              <!-- no packaging - source already uses package org.myorganization -->
              <fileSet filtered="false" packaged="false">
                  <directory>src/main/java/</directory>
              </fileSet>
              <fileSet filtered="false" packaged="false">
                  <directory>src/test/java/</directory>
              </fileSet>
              <fileSet filtered="false" packaged="false">
                  <directory>src/main/resources/</directory>
              </fileSet>
          </fileSets>
      </module>
      
      <module dir="examples" name="My Components Examples">
          <fileSets>
              <!-- no packaging - source already uses package org.myorganization -->
              <fileSet filtered="false" packaged="false">
                  <directory>src/main/java/</directory>
              </fileSet>
              <fileSet filtered="false" packaged="false">
                  <directory>src/main/log4j/</directory>
              </fileSet>
              <fileSet filtered="false" packaged="false">
                  <directory>src/main/resources/</directory>
              </fileSet>
              <fileSet filtered="false" packaged="false">
                  <directory>src/main/webapp/</directory>
              </fileSet>
          </fileSets>
      </module>
  </modules>

</archetype-descriptor>














