<?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>3.2.0-SNAPSHOT</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>com.helger.maven</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>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>com.helger.maven</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>
              <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>
              <dependency>
                <!-- this dependency is required for Java 1.8 compatibility! -->
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-rt</artifactId>
                <version>${master_dependency_jaxws_version}</version>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <id>wsimport-1</id>
                <goals>
                  <goal>wsimport</goal>
                </goals>
                <phase>validate</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>
