<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2012, 2015 Eclipse Foundation and others.
  All rights reserved. This program and the accompanying materials
  are made available under the terms of the Eclipse Distribution License v1.0
  which accompanies this distribution, and is available at
  http://www.eclipse.org/org/documents/edl-v10.php
 
  Contributors:
     Igor Fedorenko - initial 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.common</artifactId>
    <groupId>eclipse.platform.common</groupId>
    <version>4.5.1-SNAPSHOT</version>
    <relativePath>../../</relativePath>
  </parent>
  <groupId>org.eclipse.jdt</groupId>
  <artifactId>org.eclipse.jdt.doc.user</artifactId>
  <version>3.11.1-SNAPSHOT</version>
  <packaging>eclipse-plugin</packaging>
  <profiles>
    <profile>
      <id>build-docs</id>
      <activation>
        <property>
          <!-- workaround. activeByDefault is disabled when another profile is
            selected. -->
          <name>!longnotexistingproperty</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.eclipse.tycho.extras</groupId>
            <artifactId>tycho-eclipserun-plugin</artifactId>
            <version>${tycho-extras.version}</version>
            <executions>
              <execution>
                <id>dont_skip_me</id>
                <phase>compile</phase>
                <configuration>
                  <skip>false</skip>
                  <appArgLine>-consolelog -debug -application org.eclipse.ant.core.antRunner -quiet -buildfile build.xml build.index</appArgLine>
                  <dependencies>
                    <dependency>
                      <artifactId>org.eclipse.osgi.compatibility.state</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.ant.core</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.apache.ant</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                    <dependency>
                      <artifactId>org.eclipse.help.base</artifactId>
                      <type>eclipse-plugin</type>
                    </dependency>
                  </dependencies>
                  <repositories>
                    <repository>
                      <id>eclipse</id>
                      <layout>p2</layout>
                      <url>${eclipserun-repo}</url>
                    </repository>
                  </repositories>
                </configuration>
                <goals>
                  <goal>eclipse-run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
