<?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</groupId>
    <artifactId>apache</artifactId>
    <version>23</version>
    <relativePath />
  </parent>

  <groupId>org.apache.royale.framework</groupId>
  <artifactId>royale-framework-parent</artifactId>
  <version>0.9.11-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 "with-examples" profile
        - In order to assemble a distribution, activate the "with-distribution" profile.
  -->

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/royale-asjs.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/royale-asjs.git</developerConnection>
    <url>https://github.com/apache/royale-asjs</url>
    <tag>HEAD</tag>
  </scm>

  <properties>
    <java.version>11</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>

    <royale.build-tools.version>1.2.1</royale.build-tools.version>
    <project.royale.compiler.version>0.9.11-SNAPSHOT</project.royale.compiler.version>
    <royale.typedefs.version>0.9.11-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>32.0</flash.version>
    <air.version>32.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>

    <release-profiles>apache-release,with-distribution,option-with-swf</release-profiles>

    <!-- Dont't open multiple connections to one service to upload multiple artifacts at the same time -->
    <maven.wagon.httpconnectionManager.maxPerRoute>1</maven.wagon.httpconnectionManager.maxPerRoute>
    <!-- Dont't open multiple connections in total to upload multiple artifacts at the same time -->
    <maven.wagon.httpconnectionManager.maxTotal>1</maven.wagon.httpconnectionManager.maxTotal>
    <!-- Change the retry handler to a version that supports retries -->
    <maven.wagon.http.retryHandler.class>standard</maven.wagon.http.retryHandler.class>
    <!-- Try at most 6 times to deploy every artifact -->
    <maven.wagon.http.retryHandler.count>6</maven.wagon.http.retryHandler.count>
  </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://gitbox.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>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-http</artifactId>
        <version>3.4.0</version>
      </extension>
    </extensions>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.googlecode.maven-download-plugin</groupId>
          <artifactId>download-maven-plugin</artifactId>
          <version>1.5.0</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>${project.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>${project.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>io.github.cleydyr</groupId>
          <artifactId>dart-sass-maven-plugin</artifactId>
          <version>0.3.0</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-javadoc-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>

        <plugin>
          <groupId>com.theoryinpractise</groupId>
          <artifactId>reproducible-maven-plugin</artifactId>
          <version>1.0.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
          <!-- If deploying fails due to repo or network problems, retry the given number of times (1-10) -->
          <configuration>
            <retryFailedDeploymentCount>6</retryFailedDeploymentCount>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.0.0-M1</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>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <arguments combine.self="override">-P${release-profiles}</arguments>
        </configuration>
      </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>
          <!-- Make rat log the problematic files in the build output -->
          <consoleOutput>true</consoleOutput>
          <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>
            <!-- 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>
            <!-- 
                Same case for generated compilations of examples or libraries
                done with IDEs that instead of target use bin.
            -->
            <exclude>**/bin/**</exclude>
            
            <exclude>**/src/test/royale/out/**</exclude>
            <exclude>lib/external/*.html</exclude>
            
            <!-- Moonshine generate this files -->
            <exclude>obj/*.xml</exclude>
            <exclude>*.as3proj</exclude>

            <!-- Exclude node_modules -->
            <exclude>node_modules/**</exclude>
            
            <!-- Exclude serc/assets like *.afdesign or other files that generate other project source files like SVGs -->
            <exclude>src/assets/**</exclude>

            <!--
              Exclude these empty files, as they are empty and therefore don't contain anything
              (They are needed for supporting the FlashBuilder product)
            -->
            <exclude>**/localfonts.ser</exclude>
            <exclude>**/macfonts.ser</exclude>
            <exclude>**/winfonts.ser</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>

    <!-- Disabled for now till I find out what the module is about -->
    <!--profile>
      <id>with-ui-testsuite</id>
      <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>org.apache.royale.typedefs</groupId>
          <artifactId>royale-typedefs-airglobal</artifactId>
          <version>${royale.typedefs.version}</version>
          <type>swc</type>
          <scope>runtime</scope>
          <classifier>swf</classifier>
        </dependency>
      </dependencies>
    </profile>

    <profile>
      <id>_reproducible-build</id>
      <properties>
          <repo.compiler.options>
          -metadata.date=${project.build.outputTimestamp};-metadata.dateFormat=yyyy-MM-dd'T'HH:mm:ss'Z'</repo.compiler.options>
      </properties>
      <activation>
        <property>
          <name>project.build.outputTimestamp</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.royale.compiler</groupId>
            <artifactId>royale-maven-plugin</artifactId>
            <version>${project.royale.compiler.version}</version>
            <extensions>true</extensions>
            <configuration>
              <additionalCompilerOptions>${repo.compiler.options}</additionalCompilerOptions>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!--
      This profile enables the changes required to do releases on the Royale CI server.
      It should not be used otherwise.
    -->
    <profile>
      <id>royale-release</id>
      <properties>
        <!-- Ensure the royale-release plugin is enabled when running release:perform -->
        <release-profiles>apache-release,royale-release,with-distribution,option-with-swf</release-profiles>
      </properties>

      <!-- Redirect the deployment to a local directory -->
      <!-- Note: using the 'altReleaseDeploymentRepository' and alike were ignored in the release:perform phase -->
      <distributionManagement>
        <repository>
          <id>apache.releases.https</id>
          <name>Apache Release Distribution Repository</name>
          <!--
            'maven.multiModuleProjectDirectory' is a property introduced with maven 3.3.1 ...
            don't worry if your IDE is complaining.
            Also this will be set to the 'target/checkout' directory the output will be in
            'target/local-release-dir'.
          -->
          <url>file://${maven.multiModuleProjectDirectory}/../local-release-dir</url>
        </repository>
      </distributionManagement>

      <build>
        <plugins>
          <!-- Generate the effective poms for this build -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-help-plugin</artifactId>
            <executions>
              <execution>
                <id>generate-effective-pom</id>
                <phase>compile</phase>
                <goals>
                  <goal>effective-pom</goal>
                </goals>
                <configuration>
                  <output>${project.build.directory}/effective.pom</output>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
        <pluginManagement>
          <plugins>
            <!-- We require the release manager to manually login an sign using his credentials -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-gpg-plugin</artifactId>
              <configuration>
                <skip>true</skip>
              </configuration>
            </plugin>
            <!-- We require the release manager to login and push the changes using his credentials -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-release-plugin</artifactId>
              <configuration>
                <pushChanges>false</pushChanges>
                <providerImplementations>
                  <git>jgit</git>
                </providerImplementations>
              </configuration>
              <dependencies>
                <dependency>
                  <groupId>org.apache.maven.scm</groupId>
                  <artifactId>maven-scm-provider-jgit</artifactId>
                  <version>1.11.4-SNAPSHOT</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <!--
      This profile is needed by the releasesteps.xml Ant script in order to know
      where to deploy artifacts.
    -->
    <profile>
      <id>_releasesteps-upload-release-to-staging</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <modules><!-- only run on top-level, not for each module -->
      </modules>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>wagon-maven-plugin</artifactId>
            <version>2.0.0</version>
            <configuration>
              <includes>**</includes>
              <serverId>apache.releases.https</serverId>
              <url>https://repository.apache.org/service/local/staging/deploy/maven2</url>
            </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>
            </configuration>
          </plugin>

          <!--
            Create MD5 and SHA512 checksum files for the release artifacts.
          -->
          <plugin>
            <groupId>net.nicoulaj.maven.plugins</groupId>
            <artifactId>checksum-maven-plugin</artifactId>
            <version>1.8</version>
            <executions>
              <execution>
                <goals>
                  <goal>files</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <algorithms>
                <algorithm>SHA-512</algorithm>
              </algorithms>
              <fileSets>
                <fileSet>
                  <directory>${project.build.directory}</directory>
                  <includes>
                    <include>royale-framework-parent-${project.version}-source-release.zip</include>
                  </includes>
                </fileSet>
              </fileSets>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
