<?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-crux</artifactId>
    <version>0.9.9</version>
  </parent>

  <artifactId>CruxQuickStartBasic</artifactId>
  <version>0.9.9</version>
  <packaging>swf</packaging>

  <name>Apache Royale: Examples: Crux: CruxQuickStartBasic</name>
  
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>royale-maven-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <mainClass>CruxQuickStart.mxml</mainClass>
          <allowSubclassOverrides>true</allowSubclassOverrides>
          <targets>${royale.targets}</targets>
          <debug>false</debug>
          <additionalCompilerOptions>
            -js-default-initializers=true;
            -source-map=true;
            <!-- removed because now using MXRoyaleBase:  -compiler.exclude-defaults-css-files=MXRoyale-${royale.framework.version}-js.swc:defaults.css; -->
            -keep-as3-metadata+=Inject,Dispatcher,EventHandler,PostConstruct,PreDestroy,ViewAdded,ViewRemoved,Bindable,Transient;
            -keep-code-with-metadata=Inject;
          </additionalCompilerOptions>
          <outputDirectory>${basedir}/target</outputDirectory>
          <flashOutputFileName>swf/${project.artifactId}.swf</flashOutputFileName>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>Basic</artifactId>
      <version>0.9.9</version>
      <type>swc</type>
      <classifier>js</classifier>
    </dependency>
   <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>BasicTheme</artifactId>
      <version>0.9.9</version>
      <type>swc</type>
      <scope>theme</scope>
      <classifier>js</classifier>
    </dependency>
  </dependencies>

  <profiles>
    <profile>
      <id>option-with-swf</id>
      <properties>
        <title>${project.artifactId}</title>
        <bgcolor>#ffffff</bgcolor>
        <useBrowserHistory>--</useBrowserHistory>
        <version_major>11</version_major>
        <version_minor>5</version_minor>
        <version_revision>0</version_revision>
        <expressInstallSwf>expressInstall.swf</expressInstallSwf>
        <application>${project.artifactId}</application>
        <swf>${project.artifactId}</swf>
        <width>100%</width>
        <height>100%</height>
      </properties>

      <build>
        <plugins>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
              <execution>
                <id>copy-template-swf</id>
                <phase>compile</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${basedir}/target/swf</outputDirectory>
                  <includeEmptyDirs>true</includeEmptyDirs>
                  <resources>
                    <resource>
                      <directory>${basedir}/../../../templates/swfobject</directory>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>com.coderplus.maven.plugins</groupId>
            <artifactId>copy-rename-maven-plugin</artifactId>
            <version>1.0.1</version>
            <executions>
              <execution>
                <id>rename-file</id>
                <phase>compile</phase>
                <goals>
                  <goal>rename</goal>
                </goals>
                <configuration>
                  <sourceFile>${basedir}/target/swf/index.template.html</sourceFile>
                  <destinationFile>${basedir}/target/swf/${project.artifactId}.html</destinationFile>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <dependencies>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>Basic</artifactId>
          <version>0.9.9</version>
          <type>swc</type>
          <classifier>swf</classifier>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

<properties><project.build.outputTimestamp>2022-03-17T08:05:21Z</project.build.outputTimestamp></properties></project>
