<?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>18</version>
  </parent>

  <groupId>org.apache.royale.compiler</groupId>
  <artifactId>royale-compiler-parent</artifactId>
  <version>0.9.6-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Royale: Compiler: Parent</name>
  <description>The Apache Royale Project</description>

  <scm>
    <connection>scm:git:https://github.com/apache/royale-compiler.git</connection>
    <developerConnection>scm:git:https://github.com/apache/royale-compiler.git</developerConnection>
    <url>scm:git:https://github.com/apache/royale-compiler.git</url>
    <tag>release/0.9.6</tag>
  </scm>

  <properties>
    <java.version>1.6</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
    <maven.version>3.3.1</maven.version>

    <flex.version>4.15.0</flex.version>
    <flash.version>20.0</flash.version>
    <air.version>20.0</air.version>

    <jburgTypesRequired>true</jburgTypesRequired>
    <skipgpg>false</skipgpg>
    <compiler-build-tools.version>1.1.0</compiler-build-tools.version>
    <compiler-jburg-types.version>1.1.0</compiler-jburg-types.version>

    <!-- URL of the ASF SonarQube server -->
    <sonar.host.url>https://builds.apache.org/analysis</sonar.host.url>
    <!-- Tell sonar where the coverage reports are located -->
    <sonar.jacoco.reportPath>${project.build.directory}/coverage-reports/jacoco-ut.exec</sonar.jacoco.reportPath>
    <sonar.jacoco.itReportPath>${project.build.directory}/coverage-reports/jacoco-it.exec</sonar.jacoco.itReportPath>
    <!-- Exclude all generated code -->
    <sonar.exclusions>file:**/generated-sources/**</sonar.exclusions>

    <website.path>latest-dev</website.path>
  </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://github.com/apache/royale-compiler.git</url>
    </site>
  </distributionManagement>

  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/apache/royale-compiler/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>

  <!--
      As the compiler build uses the jburg plugin which has a dependency on
      the compiler-jburg-types artifact that are part of this project. We therefore have
      a utils profile, that builds these these artifacts so Maven doesn't fail
      as it resolves plugin dependencies before starting the build.
      After one build with "-P -main,utils" (don't use main profile, use utils profile
      has been built, the default build should be able to do it's job.
  -->
  <profiles>
    <profile>
      <id>utils</id>
      <activation>
          <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
          <jburgTypesRequired>false</jburgTypesRequired>
      </properties>
      <modules>
        <module>compiler-build-tools</module>
        <module>compiler-jburg-types</module>
      </modules>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <configuration>
              <skip>${skipgpg}</skip><!--true to skip gpg if building release on CI server -->
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
              <providerImplementations>
                <git>jgit</git>
              </providerImplementations>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>org.apache.maven.scm</groupId>
                <artifactId>maven-scm-provider-jgit</artifactId>
                <version>1.11.2-SNAPSHOT</version>
              </dependency>
              <dependency>
                <groupId>org.apache.maven.scm</groupId>
                <artifactId>maven-scm-api</artifactId>
                <version>1.11.2-SNAPSHOT</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
        <id>main</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <modules>
            <module>compiler-common</module>
            <module>compiler-externc</module>
            <module>compiler</module>
            <module>compiler-jx</module>
            <module>compiler-test-utils</module>
            <module>swfutils</module>
            <module>debugger</module>
            <module>flex-compiler-oem</module>
            <module>royale-ant-tasks</module>
            <module>royaleunit-ant-tasks</module>
            <!--<module>royale-maven-extension</module>-->
            <module>royale-maven-plugin</module>
        </modules>
        <build>
          <plugins>
            <plugin>
              <groupId>net.sourceforge.jburg</groupId>
              <artifactId>jburg-maven-plugin</artifactId>
              <version>1.10.4</version>
              <dependencies>
                <dependency>
                  <groupId>org.apache.royale.compiler</groupId>
                  <artifactId>compiler-jburg-types</artifactId>
                  <version>${compiler-jburg-types.version}</version>
                </dependency>
              </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <providerImplementations>
                        <git>jgit</git>
                    </providerImplementations>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.maven.scm</groupId>
                        <artifactId>maven-scm-provider-jgit</artifactId>
                        <version>1.11.2-SNAPSHOT</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.maven.scm</groupId>
                        <artifactId>maven-scm-api</artifactId>
                        <version>1.11.2-SNAPSHOT</version>
                    </dependency>
                </dependencies>
            </plugin>
          </plugins>
        </build>
    </profile>
    <profile>
      <id>apache-release</id>
      <activation>
          <activeByDefault>false</activeByDefault>
      </activation>
      <properties>
        <website.path>${project.version}</website.path>
      </properties>
    </profile>
    <profile>
        <id>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>
    <profile>
        <id>test-using-swf</id>
        <dependencies>
            <dependency>
                <groupId>com.adobe.flash.framework</groupId>
                <artifactId>playerglobal</artifactId>
                <version>${flash.version}</version>
                <type>swc</type>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
  </profiles>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <configuration>
          <skip>${skipgpg}</skip><!--true to skip gpg if building release on CI server -->
        </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.12</version>
        <executions>
          <execution>
            <id>license-check</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <excludes>
            <exclude>LICENSE*</exclude>
            <exclude>NOTICE*</exclude>
            <exclude>README*</exclude>
            <exclude>RELEASE_NOTES*</exclude>
            <!-- Modules which are excluded from the build -->
            <!-- 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>
            <exclude>**/*.classpath</exclude>
            <exclude>**/*.project</exclude>
            <!-- Ignore IntelliJ IDEA project files -->
            <exclude>**/*.iml</exclude>
            <exclude>**/.idea/**</exclude>
            <!-- Ignore VSCode/Java project files -->
            <exclude>**/.factorypath</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>**/release-dir/**</exclude>
            <!-- Stuff an Ant build might have left behind. -->
            <exclude>lib/**</exclude>
            <!--
                In case of an ANT based release the typedefs are included as a
                subdirectory. We need to exclude this directory from the compiler checks
                as the typedefs build will handle all content in that directory
            -->
            <exclude>royale-typedefs/**</exclude>
            <!-- This file is used to get reproducible builds.  See royale-maven-plugin/pom.xml
                 for more info.
             -->
            <exclude>**/src/main/sisu/javax.inject.Named</exclude>
          </excludes>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-core</artifactId>
            <version>1.6</version>
            <exclusions>
              <exclusion>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
        </dependencies>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>analyze</id>
            <goals>
              <goal>analyze-only</goal>
            </goals>
            <configuration>
              <failOnWarning>false</failOnWarning>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.9</version>
        <executions>
          <!--
              Prepares the property pointing to the JaCoCo runtime agent which
              is passed as VM argument when Maven the Surefire plugin is executed.
          -->
          <execution>
            <id>pre-unit-test</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <configuration>
              <!-- Sets the path to the file which contains the execution data. -->
              <destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
              <!--
                  Sets the name of the property containing the settings
                  for JaCoCo runtime agent.
              -->
              <propertyName>surefireArgLine</propertyName>
            </configuration>
          </execution>
          <!--
              Ensures that the code coverage report for unit tests is created after
              unit tests have been run.
          -->
          <execution>
            <id>post-unit-test</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
            <configuration>
              <!-- Sets the path to the file which contains the execution data. -->
              <dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
              <!-- Sets the output directory for the code coverage report. -->
              <outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
            </configuration>
          </execution>
          <!--
              Prepares the property pointing to the JaCoCo runtime agent which
              is passed as VM argument when Maven the Failsafe plugin is executed.
          -->
          <execution>
            <id>pre-integration-test</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <configuration>
              <!-- Sets the path to the file which contains the execution data. -->
              <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile>
              <!--
                  Sets the name of the property containing the settings
                  for JaCoCo runtime agent.
              -->
              <propertyName>failsafeArgLine</propertyName>
            </configuration>
          </execution>
          <!--
              Ensures that the code coverage report for integration tests after
              integration tests have been run.
          -->
          <execution>
            <id>post-integration-test</id>
            <phase>post-integration-test</phase>
            <goals>
              <goal>report</goal>
            </goals>
            <configuration>
              <!-- Sets the path to the file which contains the execution data. -->
              <dataFile>${project.build.directory}/coverage-reports/jacoco-it.exec</dataFile>
              <!-- Sets the output directory for the code coverage report. -->
              <outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Make the surefire execute all unit-tests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</version>
        <configuration>
          <argLine>${surefireArgLine}</argLine>
          <systemPropertyVariables>
            <buildType>Maven</buildType>
            <flexVersion>${flex.version}</flexVersion>
            <flashVersion>${flash.version}</flashVersion>
            <airVersion>${air.version}</airVersion>
            <mavenLocalRepoDir>${settings.localRepository}</mavenLocalRepoDir>
          </systemPropertyVariables>
          <!--
              Currently some tests need this to be disabled,
              but actually this is a bug. For now I'll disable
              them to avoid problems during the maven migration.
              After this is finished, we should defnitely fix
              the tests so assertions can be enabled.
          -->
          <enableAssertions>false</enableAssertions>
        </configuration>
      </plugin>

      <!-- Make the failsafe execute all integration-tests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.18.1</version>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <argLine>${failsafeArgLine}</argLine>
          <systemPropertyVariables>
            <buildType>Maven</buildType>
            <flexVersion>${flex.version}</flexVersion>
            <flashVersion>${flash.version}</flashVersion>
            <airVersion>${air.version}</airVersion>
            <mavenLocalRepoDir>${settings.localRepository}</mavenLocalRepoDir>
            <FLASHPLAYER_DEBUGGER>${env.FLASHPLAYER_DEBUGGER}</FLASHPLAYER_DEBUGGER>
          </systemPropertyVariables>
        </configuration>
      </plugin>

      <!-- Plugin to detect problems with JDK incompatibilities -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>animal-sniffer-maven-plugin</artifactId>
        <version>1.15</version>
        <executions>
          <execution>
            <id>check-jdk-1.6</id>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <signature>
            <groupId>org.codehaus.mojo.signature</groupId>
            <artifactId>java16</artifactId>
            <version>1.1</version>
          </signature>
        </configuration>
      </plugin>

      <!-- Configure the Site generation -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <!-- Downgraded to 3.4 as 3.5 and 3.5.1 seem to have issues with the velocity tools -->
        <version>3.7.1</version>
        <configuration>
          <generateReports>true</generateReports>
          <generateSitemap>true</generateSitemap>
          <relativizeDecorationLinks>false</relativizeDecorationLinks>
          <locales>en</locales>
          <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
          <outputEncoding>${project.reporting.outputencoding}</outputEncoding>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
          </dependency>
          <dependency>
            <groupId>org.apache.maven.doxia</groupId>
            <artifactId>doxia-core</artifactId>
            <version>1.6</version>
          </dependency>
          <!-- All dependencies needed by the reflow skin -->
          <dependency>
            <groupId>lt.velykis.maven.skins</groupId>
            <artifactId>reflow-velocity-tools</artifactId>
            <version>1.1.1</version>
          </dependency>
          <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
          </dependency>
        </dependencies>
      </plugin>

      <!--
        Make the maven-site-plugin stage the output in the "asf-site" branch
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>scm-publish</id>
            <phase>site-deploy</phase>
            <!-- deploy site with maven-scm-publish-plugin -->
            <goals>
              <goal>publish-scm</goal>
            </goals>
            <configuration>
              <!-- mono-module doesn't require site:stage -->
              <content>${project.build.directory}/site</content>
              <!-- branch where to deploy -->
              <scmBranch>asf-site</scmBranch>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.10.4</version>
      </plugin>

      <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>3.2</version>
      </plugin>
    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>io.github.zlika</groupId>
          <artifactId>reproducible-build-maven-plugin</artifactId>
          <version>0.9</version>
          <executions>
            <execution>
              <goals>
                <goal>strip-jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.10.4</version>
          <configuration>
            <tags>
              <tag>
                <name>goal</name>
                <placement>a</placement>
                <head>Goal:</head>
              </tag>
              <tag>
                <name>phase</name>
                <placement>a</placement>
                <head>Phase:</head>
              </tag>
              <tag>
                <name>threadSafe</name>
                <placement>a</placement>
                <head>Thread Safe:</head>
              </tag>
              <tag>
                <name>requiresDependencyResolution</name>
                <placement>a</placement>
                <head>Requires Dependency Resolution:</head>
              </tag>
              <tag>
                <name>requiresProject</name>
                <placement>a</placement>
                <head>Requires Project:</head>
              </tag>
            </tags>
            <!-- TODO: This should only be a measure of last resort -->
            <failOnError>false</failOnError>
          </configuration>
        </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-resources-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <reporting>
    <plugins>

      <!-- Generates a changelog report from GIT commits -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changelog-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <!-- Automatically link Jira issues -->
          <issueLinkUrl>https://issues.apache.org/jira/browse/%ISSUE%</issueLinkUrl>
        </configuration>
      </plugin>

      <!-- Generates a report with the details of the unit- and integrationtests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.19.1</version>
      </plugin>

      <!-- Generates a report with the test coverages -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.9</version>
      </plugin>

      <!-- Generates a report with the SonarQube analysis reports -->
      <plugin>
        <groupId>org.codehaus.sonar-plugins</groupId>
        <artifactId>maven-report</artifactId>
        <version>0.1</version>
      </plugin>

      <!-- Generate the JavaDoc API documentation -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.10.4</version>
      </plugin>
    </plugins>
  </reporting>

  <repositories>
    <repository>
      <id>apache-release</id>
      <url>https://repository.apache.org/content/repositories/releases</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>apache-snapshots</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>apache-plugins-release</id>
      <url>https://repository.apache.org/content/repositories/releases</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
    <pluginRepository>
      <id>apache-plugins-snapshots</id>
      <url>https://repository.apache.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

</project>
