<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) 2019 École Polytechnique de Montréal

   All rights reserved. This program and the accompanying materials
   are made available under the terms of the Eclipse Public License 2.0
   which accompanies this distribution, and is available at
   https://www.eclipse.org/legal/epl-2.0/

   SPDX-License-Identifier: EPL-2.0
-->

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <artifactId>org.eclipse.tracecompass.incubator</artifactId>
    <groupId>org.eclipse.tracecompass.incubator</groupId>
    <version>0.8.0-SNAPSHOT</version>
  </parent>

  <artifactId>org.eclipse.tracecompass.incubator.scripting-parent</artifactId>
  <packaging>pom</packaging>

  <name>Trace Compass Incubator Scripting Parent</name>

  <modules>
    <module>org.eclipse.tracecompass.incubator.scripting</module>
    <module>org.eclipse.tracecompass.incubator.scripting.javascript</module>
    <module>org.eclipse.tracecompass.incubator.scripting.python</module>
    <module>org.eclipse.tracecompass.incubator.scripting.core</module>
    <module>org.eclipse.tracecompass.incubator.scripting.core.tests</module>
    <module>org.eclipse.tracecompass.incubator.scripting.ui</module>
    <module>org.eclipse.tracecompass.incubator.scripting.ui.tests</module>
    <!-- insert modules here -->
  </modules>

<profiles>
   <profile>
        <!-- build help pages for modules using javadoc. Needs variable doclet.path 
             to be set to the location of the ModuleDoclet jar. The jar can be built with: 
             mvn clean package -f org.eclipse.ease.core/developers/org.eclipse.ease.helpgenerator/pom.xml 
             in which case the doclet.path would be: org.eclipse.ease.core/developers/org.eclipse.ease.helpgenerator/target/ease.module.doclet.jar 
             or the pre-built jar can downloaded from: https://ci.eclipse.org/ease/job/ease.build.module.doclet/lastSuccessfulBuild/artifact/developers/org.eclipse.ease.helpgenerator/target/ease.module.doclet.jar -->
        <id>module-docs</id>
        <properties>
            <platform.api>org.eclipse.platform.doc.isv/reference/api</platform.api>
            <doclet.path>${user.dir}/ease.module.doclet.jar</doclet.path>
        </properties>
        <build>
            <plugins>

                <!-- enable module documentation builder -->
                <plugin>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <groupId>org.apache.maven.plugins</groupId>
                    <version>3.5.0</version>
                    <configuration>
                        <outputDirectory>${project.build.directory}/../mydocs </outputDirectory>
                        <doclet>org.eclipse.ease.helpgenerator.V9ModuleDoclet</doclet>
                        <docletPath>${doclet.path}</docletPath>
			<additionalparam>-root ${basedir} -failOnHTMLError true
                                           -failOnMissingDocs true</additionalparam>

                        <useStandardDocletOptions>false</useStandardDocletOptions>
                        <excludePackageNames>org.eclipse.tracecompass.incubator.internal.*:*.test*</excludePackageNames>
                        <links>
                            <link>https://osgi.org/javadoc/r6/cmpn</link>
                            <link>http://docs.oracle.com/javase/8/docs/api/</link>
                            <link>https://archive.eclipse.org/tracecompass/doc/javadoc/apidocs/</link>
                        </links>
                        <verbose>true</verbose>
                    </configuration>
                    <executions>
                        <execution>
                            <id>build-docs</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>javadoc</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <groupId>org.codehaus.mojo</groupId>
                    <version>3.4.0</version>
                    <executions>
                        <execution>
                            <id>add_help</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>add-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>${basedir}/help</directory>
                                        <targetPath>help</targetPath>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
</project>
