<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         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</groupId>
    <artifactId>apache</artifactId>
    <version>21</version>
    <relativePath/>
  </parent>

  <groupId>org.apache.royale.framework</groupId>
  <artifactId>royale-framework-parent</artifactId>
  <version>0.9.7-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Royale: Framework: Parent</name>
  <description>The Apache Royale Project</description>

  <!--
        This build builds only the framework libraries per default.
        - In order to build the examples, activate the "build-examples" profile
        - In order to assemble a distribution, activate the "build-distribution" profile.
  -->

  <scm>
    <connection>scm:git:https://github.com/apache/royale-asjs.git</connection>
    <developerConnection>scm:git:https://github.com/apache/royale-asjs.git</developerConnection>
    <url>scm:git:https://github.com/apache/royale-asjs.git</url>
    <tag>release/0.9.6</tag>
  </scm>

  <properties>
    <java.version>1.7</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
    <maven.version>3.5.4</maven.version>

    <!-- Timestamp for the reproducible builds -->
    <!--project.build.outputTimestamp>2019-11-01T10:30:00Z</project.build.outputTimestamp-->

    <royale.build-tools.version>1.1.0</royale.build-tools.version>
    <royale.compiler.version>0.9.7-SNAPSHOT</royale.compiler.version>
    <royale.typedefs.version>0.9.7-SNAPSHOT</royale.typedefs.version>

    <royale.targets>JSRoyale</royale.targets>
    <royale.skipAS>true</royale.skipAS>
    <royale.debug>true</royale.debug>
    <repo.compiler.options/>

    <flex.version>4.15.0</flex.version>
    <flash.version>20.0</flash.version>
    <air.version>20.0</air.version>
    <!-- For SWF versions see: http://www.adobe.com/devnet/articles/flashplayer-air-feature-list.html -->
    <swf.version>31</swf.version>
    <source.map>true</source.map>

    <!-- This parameter has to be provided from the outside -->
    <webdriver.gecko.driver/>
    <selenium.version>3.4.0</selenium.version>
    <junit.version>4.12</junit.version>
  </properties>

  <!-- Only configure the site distribution as the rest is handled by the apache parent -->
  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>scm:git:https://git-wip-us.apache.org/repos/asf/royale-asjs.git</url>
    </site>
  </distributionManagement>

  <issueManagement>
    <system>Jira</system>
    <url>https://github.com/apache/royale-asjs/issues</url>
  </issueManagement>

  <mailingLists>
    <mailingList>
      <name>Apache Royale User List</name>
      <subscribe>users-subscribe@royale.apache.org</subscribe>
      <unsubscribe>users-unsubscribe@royale.apache.org</unsubscribe>
      <post>users@royale.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/royale-users/</archive>
    </mailingList>
    <mailingList>
      <name>Apache Royale Developer List</name>
      <subscribe>dev-subscribe@royale.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@royale.apache.org</unsubscribe>
      <post>dev@royale.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/royale-dev/</archive>
    </mailingList>
  </mailingLists>

  <modules>
    <module>frameworks</module>
    <module>archetypes</module>
  </modules>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.googlecode.maven-download-plugin</groupId>
          <artifactId>download-maven-plugin</artifactId>
          <version>1.4.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.3</version>
        </plugin>

        <plugin>
          <groupId>org.codehaus.gmaven</groupId>
          <artifactId>groovy-maven-plugin</artifactId>
          <version>2.1.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.royale.compiler</groupId>
          <artifactId>royale-maven-plugin</artifactId>
          <version>${royale.compiler.version}</version>
          <extensions>true</extensions>
          <configuration>
            <targetPlayer>${flash.version}</targetPlayer>
            <debug>${royale.debug}</debug>
            <keepAs3Metadata>
              <name>Bindable</name>
              <name>Managed</name>
              <name>ChangeEvent</name>
              <name>NonCommittingChangeEvent</name>
              <name>Transient</name>
              <name>Mixin</name>
            </keepAs3Metadata>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.apache.royale.compiler</groupId>
              <artifactId>compiler-jx</artifactId>
              <version>${royale.compiler.version}</version>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>2.7</version>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

        <plugin>
          <groupId>nl.geodienstencentrum.maven</groupId>
          <artifactId>sass-maven-plugin</artifactId>
          <version>3.7.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-publish-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <version>1.10.0</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.3</version>
          <configuration>
            <!-- In case of a maven release, we want to build the distribution as well as the swfs -->
            <arguments>-Papache-release,with-distribution,option-with-swf ${arguments}</arguments>
          </configuration>
        </plugin>

        <plugin>
          <groupId>com.theoryinpractise</groupId>
          <artifactId>reproducible-maven-plugin</artifactId>
          <version>1.0.1</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <!-- Execute some checks if the environment ist correctly configured -->
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>groovy-maven-plugin</artifactId>
        <executions>
          <!-- Do some pre-build checks and report any findings to the user -->
          <execution>
            <id>prerequisite-check</id>
            <phase>validate</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <inherited>false</inherited>
            <configuration>
              <properties>
                <!--
                  We have to pass this value in this way or we can't
                  access the value overridden by the commandline.
                -->
                <geckoProperty>${webdriver.gecko.driver}</geckoProperty>
              </properties>
              <source>${project.basedir}/src/main/script/prerequisiteCheckFramework.groovy</source>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Check if all source files have the required apache license headers -->
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>0.13</version>
        <executions>
          <execution>
            <id>license-check</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludes>
            <!-- JSON files can't contain comments -->
            <exclude>**/*.json</exclude>
            <!-- This is appended to the LICENSE file for binary packages-->
            <exclude>LICENSE.bin</exclude>
            <!-- READMEs don't have headers -->
            <exclude>README.md</exclude>
            <exclude>npm/README.md</exclude>
            <!-- RELEASE_NOTES don't have headers either -->
            <exclude>**/RELEASE_NOTES.md</exclude>

            <!-- Stuff that needs to be removed -->
            <exclude>fxg2svg/**</exclude>
            <exclude>vf2js/**</exclude>
            <!-- Should probably also be removed -->
            <exclude>js/*jshint*</exclude>
            <!-- FlashBuilder settings. frameworks/fb.properties contains Alex' path entries and should be removed -->
            <exclude>**/fb.properties</exclude>
            <!-- FlashBuilder / Eclipse settings. If checked in, they should have apache headers -->
            <exclude>**/.settings/**</exclude>
            <!-- Ignore IntelliJ IDEA project files -->
            <exclude>**/*.iml</exclude>
            <exclude>**/.idea/**</exclude>
            <!-- SASS cc.map generated files by sass-maven-plugin-->
            <exclude>**/*.css.map</exclude>
            <!-- swfobject.js is MIT License-->
            <exclude>**/swfobject.js</exclude>
            <!-- audio file doesn't have rat-able license-->
            <exclude>**/ping.mp3</exclude>
            <!--
                Exclude any eventually existing content of target directories.
                Some times when building with a bigger maven reactor and then
                with a smaller one, RAT will complain about stuff still in the
                target directories. We don't want that.
            -->
            <exclude>**/target/**</exclude>

            <exclude>**/src/test/royale/out/**</exclude>
            <exclude>lib/external/*.html</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>with-examples</id>
      <modules>
        <module>examples</module>
      </modules>
    </profile>

    <profile>
      <id>with-distribution</id>
      <modules>
        <module>distribution</module>
      </modules>
    </profile>

    <profile>
      <id>with-manualtests</id>
      <modules>
        <module>manualtests</module>
      </modules>
    </profile>

    <profile>
      <id>with-ui-testsuite</id>
      <!-- Disabled for now till I find out what the module is about -->
      <!--modules>
        <module>testsuite</module>
      </modules-->
    </profile>

    <profile>
      <id>option-with-swf</id>
      <properties>
        <royale.targets>SWF,JSRoyale</royale.targets>
        <royale.skipAS>false</royale.skipAS>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.adobe.air.framework</groupId>
          <artifactId>airglobal</artifactId>
          <version>${air.version}</version>
          <type>swc</type>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>_reproducible-build</id>
      <activation>
        <property>
          <name>project.build.outputTimestamp</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.royale.compiler</groupId>
            <artifactId>royale-maven-plugin</artifactId>
            <version>${royale.compiler.version}</version>
            <extensions>true</extensions>
            <configuration>
              <additionalCompilerOptions>
                -metadata.date=${project.build.outputTimestamp};-metadata.dateFormat=yyyy-MM-dd'T'HH:mm:ss'Z'
              </additionalCompilerOptions>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Make the release-plugin use the new reproducible build plugin extension -->
    <profile>
      <id>apache-release</id>
      <properties>
        <source.map>false</source.map>
        <royale.debug>false</royale.debug>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>com.theoryinpractise</groupId>
            <artifactId>reproducible-maven-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
              <preparationGoals>clean com.theoryinpractise:reproducible-maven-plugin:apply install</preparationGoals>
              <completionGoals>com.theoryinpractise:reproducible-maven-plugin:clear</completionGoals>
              <goals>deploy</goals>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
