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

  <artifactId>RoyaleStore_jquery</artifactId>
  <version>0.9.8</version>
  <packaging>swf</packaging>

  <name>Apache Royale: Examples: Royale: RoyaleStore_jquery</name>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.royale.compiler</groupId>
        <artifactId>royale-maven-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <mainClass>RoyaleStore.mxml</mainClass>
          <allowSubclassOverrides>true</allowSubclassOverrides>
          <targets>${royale.targets}</targets>
          <removeCirculars>true</removeCirculars>
          <namespaces>
              <namespace>
                  <uri>http://ns.adobe.com/mxml/2009</uri>
                  <manifest>${project.basedir}/../../../frameworks/mxml-2009-manifest.xml</manifest>
              </namespace>
          </namespaces>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>DragDrop</artifactId>
      <version>0.9.8</version>
      <type>swc</type>
      <classifier>js</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>Effects</artifactId>
      <version>0.9.8</version>
      <type>swc</type>
      <classifier>js</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>Formatters</artifactId>
      <version>0.9.8</version>
      <type>swc</type>
      <classifier>js</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>JQuery</artifactId>
      <version>0.9.8</version>
      <type>swc</type>
      <classifier>js</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>Network</artifactId>
      <version>0.9.8</version>
      <type>swc</type>
      <classifier>js</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.framework</groupId>
      <artifactId>BasicTheme</artifactId>
      <version>0.9.8</version>
      <type>swc</type>
      <scope>theme</scope>
      <classifier>js</classifier>
    </dependency>
    <dependency>
      <groupId>org.apache.royale.typedefs</groupId>
      <artifactId>royale-typedefs-jquery</artifactId>
      <version>${royale.typedefs.version}</version>
      <type>swc</type>
      <classifier>typedefs</classifier>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

  <profiles>
    <profile>
      <id>option-with-swf</id>
      <dependencies>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>DragDrop</artifactId>
          <version>0.9.8</version>
          <type>swc</type>
          <classifier>swf</classifier>
        </dependency>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>Effects</artifactId>
          <version>0.9.8</version>
          <type>swc</type>
          <classifier>swf</classifier>
        </dependency>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>Formatters</artifactId>
          <version>0.9.8</version>
          <type>swc</type>
          <classifier>swf</classifier>
        </dependency>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>JQuery</artifactId>
          <version>0.9.8</version>
          <type>swc</type>
          <classifier>swf</classifier>
        </dependency>
        <dependency>
          <groupId>org.apache.royale.framework</groupId>
          <artifactId>Network</artifactId>
          <version>0.9.8</version>
          <type>swc</type>
          <classifier>swf</classifier>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

<properties><project.build.outputTimestamp>2020-03-27T08:32:05Z</project.build.outputTimestamp></properties></project>
