<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (c) 2015 BSI Business Systems Integration AG.
  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:
  BSI Business Systems Integration AG - 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>
    <groupId>org.eclipse.scout</groupId>
    <artifactId>maven_plugin_config-master</artifactId>
    <version>1.7</version>
    <relativePath>../maven_plugin_config-master</relativePath>
  </parent>

  <artifactId>maven_rt_plugin_config-master</artifactId>
  <packaging>pom</packaging>
  <name>Maven Master Plugin Build Configuration - RT</name>

  <properties></properties>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <!-- Loads phantomjs executable, necessary for jasmine plugin -->
          <groupId>com.github.klieber</groupId>
          <artifactId>phantomjs-maven-plugin</artifactId>
          <configuration>
            <version>${master_dependency_phantomjs_version}</version>
          </configuration>
        </plugin>

        <!-- JS testing with Jasmine -->
        <plugin>
          <groupId>com.github.searls</groupId>
          <artifactId>jasmine-maven-plugin</artifactId>
          <configuration>
            <!-- do not break build when Jasmine tests fail -->
            <haltOnFailure>false</haltOnFailure>
            <jsTestSrcDir>${project.basedir}/src/test/js</jsTestSrcDir>
            <customRunnerTemplate>${project.basedir}/src/test/js/SpecRunnerMaven.html</customRunnerTemplate>
            <sourceExcludes>
              <!-- jasmine files are explicitly included in SpecRunnerMaven.html
                because the need to be before actual sources -->
              <sourceExclude>**/jasmine/*.js</sourceExclude>
            </sourceExcludes>
            <!-- HtmlUnitDriver does not work with jQuery 2.1.0, throws exception -->
            <webDriverClassName>org.openqa.selenium.phantomjs.PhantomJSDriver</webDriverClassName>
            <webDriverCapabilities>
              <capability>
                <name>phantomjs.binary.path</name>
                <value>${phantomjs.binary}</value>
              </capability>
            </webDriverCapabilities>
          </configuration>
        </plugin>

        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.jboss.jandex</groupId>
                    <artifactId>jandex-maven-plugin</artifactId>
                    <versionRange>[1.0.1,)</versionRange>
                    <goals>
                      <goal>jandex</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>com.github.klieber</groupId>
                    <artifactId>phantomjs-maven-plugin</artifactId>
                    <versionRange>[0.7,)</versionRange>
                    <goals>
                      <goal>install</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
                <!-- WS-STUB generation: Instrument 'm2e' to generate webservice stub in Eclipse IDE (does not affect standalone Maven build) -->
                <!-- Note: Artifacts are on re-generated if the hash of 'wsartifact-hash' changes. -->
                <!-- Note: Do not move into 'jaxws' profile because ignored by 'm2e' otherwise. -->
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jaxws-maven-plugin</artifactId>
                    <versionRange>[${master_plugin_jaxws_version},)</versionRange>
                    <goals>
                      <goal>wsimport</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <execute>
                      <!-- to run on full and incremental build -->
                      <runOnIncremental>true</runOnIncremental>
                      <!-- to run once a JAX-WS module is imported into workspace -->
                      <runOnConfiguration>true</runOnConfiguration>
                    </execute>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <reporting>
    <plugins></plugins>
  </reporting>

  <profiles>
    <profile>
      <!-- Only create the jandex.idx when a scout.xml is found -->
      <id>jandex-idx</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/resources/META-INF/scout.xml</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <!-- Create META-INF/jandex.idx -->
          <plugin>
            <groupId>org.jboss.jandex</groupId>
            <artifactId>jandex-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>make-index</id>
                <goals>
                  <goal>jandex</goal>
                </goals>
                <!-- phase is 'process-classes by default' -->
                <configuration>
                  <!-- Nothing needed here for simple cases -->
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <!-- Only create the jandex.idx when a scout.xml is found -->
      <id>jandex-test-idx</id>
      <activation>
        <file>
          <exists>${basedir}/src/test/resources/META-INF/scout.xml</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <!-- Create META-INF/jandex.idx -->
          <plugin>
            <groupId>org.jboss.jandex</groupId>
            <artifactId>jandex-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>make-index</id>
                <goals>
                  <goal>jandex</goal>
                </goals>
                <!-- phase is 'process-classes by default' -->
                <phase>process-test-classes</phase>
                <configuration>
                  <processDefaultFileSet>false</processDefaultFileSet>
                  <fileSets>
                    <fileSet>
                      <directory>${project.build.directory}/test-classes/</directory>
                    </fileSet>
                  </fileSets>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>javascript_src_folder</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/js</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-js-resource</id>
                <goals>
                  <goal>add-resource</goal>
                </goals>
                <phase>generate-resources</phase>
                <configuration>
                  <resources>
                    <resource>
                      <directory>src/main/js</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>javascript_test_folder</id>
      <activation>
        <file>
          <exists>${basedir}/src/test/js</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-js-test-resource</id>
                <goals>
                  <goal>add-test-resource</goal>
                </goals>
                <phase>generate-test-resources</phase>
                <configuration>
                  <resources>
                    <resource>
                      <directory>src/test/js</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>webapp_folder</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/webapp</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-resource</id>
                <goals>
                  <goal>add-resource</goal>
                </goals>
                <phase>generate-resources</phase>
                <configuration>
                  <resources>
                    <resource>
                      <directory>src/main/webapp</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>generated_java_folder</id>
      <activation>
        <file>
          <exists>${basedir}/src/generated/java</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-source</id>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <phase>generate-sources</phase>
                <configuration>
                  <sources>
                    <source>src/generated/java</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!-- Profile used for JAX-WS plugins to generate webservice artifacts like stub and proxy. -->
    <!-- This profile is activated automatically if a folder 'src/main/resources/WEB-INF/wsdl' is found. -->
    <profile>
      <id>jaxws</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/resources/WEB-INF/wsdl</exists>
        </file>
      </activation>
      <properties>
        <!-- Destination directory for generated webservice artifacts -->
        <jaxws.stub.directory>${project.build.directory}/generated-sources/wsimport</jaxws.stub.directory>
        <!-- Directory to contain the calculated hash of WSDL, XSD and binding-files. If changed or absent, the stub is regenerated anew. -->
        <jaxws.stale.directory>${project.build.directory}/jaxws/wsartifact-hash</jaxws.stale.directory>
        <!-- To enable debug output when running APT. -->
        <jaxws.apt.consoleLog>true</jaxws.apt.consoleLog>
        <!-- Destination directory for generated APT artifacts. -->
        <jaxws.apt.directory>${project.build.directory}/generated-sources/annotations</jaxws.apt.directory>
        <!-- WSDL file name to set the 'wsdl-location' in @WebService and @WebServiceClient annotation -->
        <jaxws.wsdl.file></jaxws.wsdl.file>
      </properties>

      <build>
        <!-- EXCLUDE BINDING FILES (not used at runtime) -->
        <resources>
          <resource>
            <directory>${basedir}/src/main/resources</directory>
            <includes>
              <include>**/**</include>
            </includes>
            <excludes>
              <exclude>**/binding/</exclude>
            </excludes>
          </resource>
        </resources>
        <plugins>
          <!-- WSIMPORT (stub generation) -->
          <!-- Note: The stub is only re-generated if the hash of 'wsartifact-hash' changed. -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <configuration>
              <wsdlDirectory>${basedir}/src/main/resources/WEB-INF/wsdl</wsdlDirectory>
              <wsdlLocation>WEB-INF/wsdl/${jaxws.wsdl.file}</wsdlLocation>
              <bindingDirectory>${basedir}/src/main/resources/WEB-INF/binding</bindingDirectory>
              <sourceDestDir>${jaxws.stub.directory}</sourceDestDir>
              <destDir>${jaxws.stub.directory}</destDir>
              <xnocompile>true</xnocompile>
              <!-- compilation done by Maven -->
              <xdisableSSLHostnameVerification>true</xdisableSSLHostnameVerification>
              <xdisableAuthenticator>true</xdisableAuthenticator>
              <xdebug>true</xdebug>
              <verbose>true</verbose>
              <target>2.0</target>
              <keep>true</keep>
              <staleFile>${jaxws.stale.directory}</staleFile>
              <vmArgs>
                <vmArg>-Djavax.xml.accessExternalDTD=all</vmArg>
                <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
              </vmArgs>
            </configuration>
            <!-- to use a specific version of JAX-WS to build against -->
            <dependencies>
              <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-tools</artifactId>
                <version>${master_dependency_jaxws_version}</version>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <id>wsimport-1</id>
                <goals>
                  <goal>wsimport</goal>
                </goals>
                <phase>generate-sources</phase>
              </execution>
            </executions>
          </plugin>

          <!-- APT (PortTypeProxy, HandlerProxy, handler-chain.xml) -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <compilerArgs>
                <arg>-AconsoleLog=${jaxws.apt.consoleLog}</arg>
                <arg>-XprintProcessorInfo</arg>
                <arg>-XprintRounds</arg>
              </compilerArgs>
              <verbose>true</verbose>
              <generatedSourcesDirectory>${jaxws.apt.directory}</generatedSourcesDirectory>
            </configuration>
            <dependencies>
              <!-- dependency to the annotation processor -->
              <dependency>
                <groupId>org.eclipse.scout.rt</groupId>
                <artifactId>org.eclipse.scout.jaxws.apt</artifactId>
                <version>${org.eclipse.scout.rt.version}</version>
              </dependency>
            </dependencies>
          </plugin>

          <!-- REGISTER SOURCE FOLDER -->
          <!-- Add 'target/generated-sources/annotations' as source folder -->
          <!-- Add 'target/generated-sources/wsimport' as source folder -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>add-wsimport-source</id>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>${jaxws.stub.directory}</source>
                  </sources>
                </configuration>
              </execution>
              <execution>
                <id>add-apt-source</id>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>${jaxws.apt.directory}</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- COPY artifacts -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <!-- WSIMPORT artifacts -->
              <execution>
                <id>copy-wsimport-artifacts</id>
                <!-- must not be 'process-resources' because APT files are only generated in compile phase -->
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>process-sources</phase>
                <configuration>
                  <outputDirectory>${basedir}/target/classes</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${jaxws.stub.directory}</directory>
                      <includes>
                        <include>**/**.xml</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <!-- APT artifacts -->
              <execution>
                <id>copy-apt-artifacts</id>
                <!-- must not be 'process-resources' because APT files are only generated in compile phase -->
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>process-classes</phase>
                <configuration>
                  <outputDirectory>${basedir}/target/classes</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${jaxws.apt.directory}</directory>
                      <includes>
                        <include>**/**.xml</include>
                      </includes>
                    </resource>
                  </resources>
                </configuration>
              </execution>
              <!-- Copy JAX-WS artifacts to 'META-INF/resources/WEB-INF/wsdl' to respect ServletContext resource-loading API -->
              <!-- That is crucial if 'JAX-WS implementor' loads resources by ServletContext, e.g. METRO -->
              <execution>
                <id>copy-jaxws-artifacts-to-meta-inf</id>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <phase>process-resources</phase>
                <configuration>
                  <outputDirectory>${basedir}/target/classes/META-INF/resources/WEB-INF/wsdl</outputDirectory>
                  <resources>
                    <resource>
                      <directory>${basedir}/src/main/resources/WEB-INF/wsdl</directory>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
