<?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.

--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.royale.framework</groupId>
    <artifactId>royale-framework-parent</artifactId>
    <version>0.9.8-SNAPSHOT</version>
  </parent>

  <artifactId>royale-maven-archetypes</artifactId>
  <version>0.9.8-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Royale: Framework: Archetypes</name>
  <description>Maven archetypes for creating royale maven projects</description>

  <properties>
    <royale.framework.version>0.9.8-SNAPSHOT</royale.framework.version>
  </properties>
  
  <modules>
    <module>royale-simple-application-archetype</module>
    <module>royale-jewel-application-archetype</module>
    <module>royale-jewel-library-archetype</module>
    <module>royale-jewel-module-application-archetype</module>
    <module>royale-simple-application-pure-js-archetype</module>
    <module>royale-simple-application-pure-swf-archetype</module>
    <module>royale-simple-library-archetype</module>
    <module>royale-simple-typedef-archetype</module>
  </modules>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>**/pom.xml</include>
          <include>**/descriptor.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
        <excludes>
          <exclude>**/pom.xml</exclude>
          <exclude>**/descriptor.xml</exclude>
        </excludes>
      </resource>
    </resources>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <escapeString>\</escapeString>
          <nonFilteredFileExtensions>
            <nonFilteredFileExtension>p12</nonFilteredFileExtension>
          </nonFilteredFileExtensions>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
