<?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.8</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:ssh://git@github.com/chrisdutz/royale-asjs.git</connection>
    <developerConnection>scm:git:ssh://git@github.com/chrisdutz/royale-asjs.git</developerConnection>
    <url>http://github.com/chrisdutz/royale-asjs</url>
    <tag>org.apache.royale.asjs-0.9.8-rc1</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>

    <royale.build-tools.version>1.1.0</royale.build-tools.version>
    <royale.compiler.version>0.9.8</royale.compiler.version>
    <royale.typedefs.version>0.9.8</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>

    <release-profiles>apache-release,with-distribution,option-with-swf</release-profiles>
  <project.build.outputTimestamp>2020-03-27T08:32:05Z</project.build.outputTimestamp></properties>

  <!-- Only configure the site distribution as the rest is handled by the apache parent -->
  <distributionManagement>
    <repository>
      <id>C-Ware IT-Service Artifactory</id>
      <name>C-Ware IT-Service Artifactory-releases</name>
      <url>https://dev.c-ware.de/artifactory/libs-releases-local</url>
    </repository>
    <snapshotRepository>
      <id>C-Ware IT-Service Artifactory</id>
      <name>C-Ware IT-Service Artifactory-releases</name>
      <url>https://dev.c-ware.de/artifactory/libs-snapshot-local</url>
    </snapshotRepository>
    <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.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>${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>com.theoryinpractise</groupId>
          <artifactId>reproducible-maven-plugin</artifactId>
          <version>1.0.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.1.1</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </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>
            <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>
            <!-- 
                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 Affinity Design -->
            <exclude>**/*.afdesign</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>

    <!--
      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>
              </configuration>
            </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>
              <goals>deploy</goals>
            </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>
