<?xml version="1.0" encoding="UTF-8"?><!-- 
###############################################################################
# Copyright (c) 2012, 2016 Red Hat, Inc and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     Krzysztof Daniel, Red Hat, Inc. - initial API and implementation
###############################################################################
--><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>
    <artifactId>eclipse.platform.swt.binaries</artifactId>
    <groupId>eclipse.platform.swt.binaries</groupId>
    <version>4.8.0-SNAPSHOT</version>
    <relativePath>../../</relativePath>
  </parent>
  <groupId>eclipse.platform.swt.binaries</groupId>
  <artifactId>binaries-parent</artifactId>
  <version>4.8.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <properties>
    <forceContextQualifier>v20170722-1903</forceContextQualifier>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-packaging-plugin</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <forceContextQualifier>${forceContextQualifier}</forceContextQualifier>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>target-platform-configuration</artifactId>
        <version>${tycho.version}</version>
        <configuration>
          <dependency-resolution>
            <profileProperties>
              <!-- set property so that the filter condition on the p2 dependencies from org.eclipse.swt to the fragments does not match -->
              <org.eclipse.swt.buildtime>true</org.eclipse.swt.buildtime>
            </profileProperties>
          </dependency-resolution>
          <environments>
            <environment>
              <os>${os}</os>
              <ws>${ws}</ws>
              <arch>${arch}</arch>
            </environment>
          </environments>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>normal</id>
            <phase>initialize</phase>
            <configuration>
              <target>
                <property name="copy.src.dir" value="src"/>
                <ant antfile="build.xml" target="copy.${ws}.src"/>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>com.sun</groupId>
            <artifactId>tools</artifactId>
            <version>0.0.0</version>
            <scope>system</scope>
            <systemPath>${toolsjar}</systemPath>
          </dependency>
          <dependency>
            <groupId>org.mozilla</groupId>
            <artifactId>rhino</artifactId>
            <version>1.7.7.1</version>
          </dependency>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-apache-bsf</artifactId>
            <version>1.10.1</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>
