<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.royale.examples</groupId>
    <artifactId>examples-royale-ModuleExample</artifactId>
    <version>0.9.7-SNAPSHOT</version>
  </parent>

  <artifactId>Module</artifactId>
  <version>0.9.7-SNAPSHOT</version>
  <packaging>swf</packaging>

  <name>Apache Royale: Examples: Royale: ModuleExample: Module</name>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>royale-maven-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <mainClass>Module.mxml</mainClass>
          <targets>${royale.targets}</targets>
          <debug>false</debug>
          <additionalCompilerOptions>-js-compiler-option=--variable_map_input_file ../../../../../MainApp/target/javascript/bin/js-release/gccvars.txt;-js-compiler-option+=--property_map_input_file ../../../../../MainApp/target/javascript/bin/js-release/gccprops.txt</additionalCompilerOptions>
        </configuration>
      </plugin>

      <!-- copy module files from Module target folder to Application target folder-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <!-- for js-release (copy all to 'modules' folder)-->
          <execution>
            <id>copy-resources-release</id>
            <phase>install</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <resources>
                <resource>
                  <directory>${project.basedir}/target/javascript/bin/js-release/</directory>
                </resource>
              </resources>
              <outputDirectory>${project.basedir}/../MainApp/target/javascript/bin/js-release/modules/</outputDirectory>
            </configuration>
          </execution>
          <!-- for js-debug (copy all to js-debug but will need a next step later (check **))-->
          <execution>
            <id>copy-resources-debug</id>
            <phase>install</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <resources>
                <resource>
                  <directory>${project.basedir}/target/javascript/bin/js-debug/</directory>
                </resource>
              </resources>
              <outputDirectory>${project.basedir}/../MainApp/target/javascript/bin/js-debug/</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- (**) for js-debug: we need to move two files from 'target/js-debug' to 'target/js-debug/modules' since Application expect to find it there -->
      <plugin>
        <groupId>com.coderplus.maven.plugins</groupId>
        <artifactId>copy-rename-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <id>debug-move-files</id>
            <phase>install</phase>
            <goals>
              <goal>rename</goal>
            </goals>
            <configuration>
              <fileSets>
                <fileSet>
                  <sourceFile>${project.basedir}/../MainApp/target/javascript/bin/js-debug/${project.artifactId}__deps.js</sourceFile>
                  <destinationFile>${project.basedir}/../MainApp/target/javascript/bin/js-debug/modules/${project.artifactId}__deps.js</destinationFile>
                </fileSet>
                <fileSet>
                  <sourceFile>${project.basedir}/../MainApp/target/javascript/bin/js-debug/${project.artifactId}.css</sourceFile>
                  <destinationFile>${project.basedir}/../MainApp/target/javascript/bin/js-debug/modules/${project.artifactId}.css</destinationFile>
                </fileSet>
              </fileSets>
            </configuration>
          </execution>
        </executions>
      </plugin>

    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>BasicTheme</artifactId>
      <version>0.9.7-SNAPSHOT</version>
      <type>swc</type>
      <scope>theme</scope>
    </dependency>
  </dependencies>

</project>
