<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.kie</groupId>
    <artifactId>kie-eap-integration-distributions</artifactId>
    <version>6.0.1.Final</version>
  </parent>

  <groupId>org.kie</groupId>
  <artifactId>kie-eap-integration-bpms</artifactId>
  <name>KIE JBoss EAP integration - BPMS distribution</name>

  <dependencies>

    <!-- This dependency provides all transitive artifacts (org.kie:kie-wb-webapp:pom) -->
    <dependency>
      <groupId>org.kie</groupId>
      <artifactId>kie-wb-webapp</artifactId>
      <version>${project.version}</version> <!-- TODO: Remove version and set into kie-parent. -->
      <type>pom</type>
    </dependency>

  </dependencies>

  <properties>

    <!-- The assembly id for generated artifacts. -->
    <eap-modules.static-layer.assembly.id>bpms-layer</eap-modules.static-layer.assembly.id>
    <eap-modules.kie-wb-webapp.assembly.id>org.kie.kie-wb-webapp</eap-modules.kie-wb-webapp.assembly.id>
    <eap-modules.jbpm-dashbuilder.assembly.id>org.jbpm.dashboard.jbpm-dashboard</eap-modules.jbpm-dashbuilder.assembly.id>

  </properties>
  <!--
      PROFILES:
      ========
        - bpms-static-layer ==> Generates the static bpms layer for EAP in a ZIP format.
        - bpms ==> Generates the kie-wb WAR (BPMS) that runs with the bpms layer.
        - jbpm-dashboard ==> Generates the jbpm-dashboard WAR that runs with the bpms layer.

        - **NOTE**: All profiles are enabled by default.
  -->
  <profiles>
    <!-- Create static layer distribution for BPMS. -->
    <profile>
      <id>bpms-static-layer</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <property>
          <name>bpms-static-layer</name>
        </property>
      </activation>
      <properties>
        <eap-modules.bpms.static.output.path>${project.build.directory}/eap-modules-generated/static-modules/bpms</eap-modules.bpms.static.output.path>
        <eap-modules.bpms.static.assembly.output.file>${eap-modules.bpms.static.output.path}/modules-assembly.xml</eap-modules.bpms.static.assembly.output.file>
      </properties>
      <build>
        <plugins>
          <!-- Generates the BPMS static modules stuff. -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>ant-generate-bpms-static-modules-stuff</id>
                <phase>package</phase>
                <configuration>
                  <target>
                    <property name="static-modules-source-path" value="${eap-modules.source.path}"/>
                    <property name="static-modules-output-path" value="${eap-modules.bpms.static.output.path}"/>
                    <property name="static-modules-list-file" value="${eap-modules.static.list.file}"/>
                    <property name="static-modules-layer-name" value="bpms"/>
                    <property name="static-modules-assembly-id" value="${eap-modules.static-layer.assembly.id}"/>
                    <property name="static-modules-assembly-output-file"
                              value="${eap-modules.bpms.static.assembly.output.file}"/>
                    <property name="templates.path" value="${eap-modules.templates.path}"/>
                    <property name="patches.path" value="${eap-modules.patches.path}"/>
                    <property name="eap-configuration-file" value="${eap-modules.eap-configuration.path}"/>
                    <property name="temp.path" value="${eap-modules.temp.path}"/>
                    <property name="scripts.path" value="${eap-modules.scripts.path}"/>

                    <echo>Creating JBoss EAP BPMS static modules stuff..</echo>

                    <taskdef resource="net/sf/antcontrib/antlib.xml" uri="net.sf.antcontrib"
                             classpathref="maven.compile.classpath"/>

                    <ant antfile="${eap-modules.core.output.path}/eap-modules/scripts/build-static-modules.xml"
                         target="main" inheritRefs="true"/>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <!-- Assembly the BPMS distribution for static modules. -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <finalName>${eap-modules.assembly.name}</finalName>
              <descriptors combine.children="append">
                <!-- Create the JBoss EAP BPMS static modules distribution. -->
                <descriptor>${eap-modules.bpms.static.assembly.output.file}</descriptor>
              </descriptors>
              <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
              </archive>
            </configuration>
          </plugin>

        </plugins>
      </build>
    </profile>

    <!-- Create distribution for BPMS (kie-wb). -->
    <profile>
      <id>bpms</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <property>
          <name>bpms</name>
        </property>
      </activation>
      <properties>
        <!-- The skinny BPMS war to generate will be build from source artifact: org.kie:kie-wb-distribution-wars:war:eap-6_1 -->
        <eap-modules.dynamic.kie-wb.name>org.kie.kie-wb-webapp</eap-modules.dynamic.kie-wb.name>
        <eap-modules.dynamic.kie-wb.assembly.output.file>${eap-modules.dynamic.output.path}/kie-wb-modules-assembly.xml</eap-modules.dynamic.kie-wb.assembly.output.file>
        <eap-modules.dynamic.kie-wb.assembly.source.artifact.groupdId>org.kie</eap-modules.dynamic.kie-wb.assembly.source.artifact.groupdId>
        <eap-modules.dynamic.kie-wb.assembly.source.artifact.artifactId>kie-wb-distribution-wars</eap-modules.dynamic.kie-wb.assembly.source.artifact.artifactId>
        <eap-modules.dynamic.kie-wb.assembly.source.artifact.type>war</eap-modules.dynamic.kie-wb.assembly.source.artifact.type>
        <eap-modules.dynamic.kie-wb.assembly.source.artifact.classifier>eap-6_1</eap-modules.dynamic.kie-wb.assembly.source.artifact.classifier>
      </properties>
      <dependencies>
        <!-- This dependency is used as source artifact for maven assembly. -->
        <dependency>
          <groupId>${eap-modules.dynamic.kie-wb.assembly.source.artifact.groupdId}</groupId>
          <artifactId>${eap-modules.dynamic.kie-wb.assembly.source.artifact.artifactId}</artifactId>
          <version>${project.version}</version> <!-- TODO: Remove version here and set into kie-parent. -->
          <classifier>${eap-modules.dynamic.kie-wb.assembly.source.artifact.classifier}</classifier>
          <type>${eap-modules.dynamic.kie-wb.assembly.source.artifact.type}</type>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <!-- Generates kie-wb stuff and distribution. -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>ant-build-dynamic-module-bpms</id>
                <phase>package</phase>
                <configuration>
                  <target>
                    <property name="static-modules-list-file" value="${eap-modules.static.list.file}"/>
                    <property name="static-modules-source-path" value="${eap-modules.source.path}"/>
                    <property name="dynamic-modules-output-path" value="${eap-modules.dynamic.output.path}"/>
                    <property name="dynamic-module-assembly-output-file"
                              value="${eap-modules.dynamic.kie-wb.assembly.output.file}"/>
                    <property name="dynamic-module-assembly-war-source"
                              value="${eap-modules.dynamic.kie-wb.assembly.source.artifact.groupdId}:${eap-modules.dynamic.kie-wb.assembly.source.artifact.artifactId}:${eap-modules.dynamic.kie-wb.assembly.source.artifact.type}:${eap-modules.dynamic.kie-wb.assembly.source.artifact.classifier}"/>
                    <property name="dynamic-module-assembly-id" value="${eap-modules.kie-wb-webapp.assembly.id}"/>
                    <property name="templates.path" value="${eap-modules.templates.path}"/>
                    <property name="patches.path" value="${eap-modules.patches.path}"/>
                    <property name="eap-configuration-file" value="${eap-modules.eap-configuration.path}"/>
                    <property name="temp.path" value="${eap-modules.temp.path}"/>
                    <property name="scripts.path" value="${eap-modules.scripts.path}"/>

                    <taskdef resource="net/sf/antcontrib/antlib.xml" uri="net.sf.antcontrib"
                             classpathref="maven.compile.classpath"/>

                    <echo>Creating stuff for module ${eap-modules.dynamic.kie-wb.name}</echo>
                    <ant antfile="${eap-modules.core.output.path}/eap-modules/scripts/build-dynamic-module.xml"
                         target="main" inheritRefs="true">
                      <property name="module-name" value="${eap-modules.dynamic.kie-wb.name}"/>
                    </ant>

                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <!-- Assembly the kie-wb dynamic module. -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <finalName>${eap-modules.assembly.name}</finalName>
              <descriptors combine.children="append">
                <descriptor>${eap-modules.dynamic.kie-wb.assembly.output.file}</descriptor>
              </descriptors>
              <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
              </archive>
            </configuration>
          </plugin>

        </plugins>
      </build>
    </profile>

    <!-- Create distribution for jBPM Dashboard. -->
    <profile>
      <id>jbpm-dashboard</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <property>
          <name>jbpm-dashboard</name>
        </property>
      </activation>
      <properties>
        <!-- The skinny BPMS war to generate will be build from source artifact: org.jbpm.dashboard:jbpm-dashboard-distributions:war:jboss-as7 -->
        <eap-modules.dynamic.jbpm-dash.name>org.jbpm.dashboard.jbpm-dashboard</eap-modules.dynamic.jbpm-dash.name>
        <eap-modules.dynamic.jbpm-dash.assembly.output.file>${eap-modules.dynamic.output.path}/jbpm-dashbuilder-modules-assembly.xml</eap-modules.dynamic.jbpm-dash.assembly.output.file>
        <eap-modules.dynamic.jbpm-dash.assembly.source.artifact.groupdId>org.jbpm.dashboard</eap-modules.dynamic.jbpm-dash.assembly.source.artifact.groupdId>
        <eap-modules.dynamic.jbpm-dash.assembly.source.artifact.artifactId>jbpm-dashboard-distributions</eap-modules.dynamic.jbpm-dash.assembly.source.artifact.artifactId>
        <eap-modules.dynamic.jbpm-dash.assembly.source.artifact.type>war</eap-modules.dynamic.jbpm-dash.assembly.source.artifact.type>
        <eap-modules.dynamic.jbpm-dash.assembly.source.artifact.classifier>jboss-as7</eap-modules.dynamic.jbpm-dash.assembly.source.artifact.classifier>
      </properties>
      <dependencies>
        <!-- This dependency is used as source artifact for maven assembly. -->
        <dependency>
          <groupId>${eap-modules.dynamic.jbpm-dash.assembly.source.artifact.groupdId}</groupId>
          <artifactId>${eap-modules.dynamic.jbpm-dash.assembly.source.artifact.artifactId}</artifactId>
          <version>${project.version}</version> <!-- TODO: Remove version here and set into kie-parent. -->
          <classifier>${eap-modules.dynamic.jbpm-dash.assembly.source.artifact.classifier}</classifier>
          <type>${eap-modules.dynamic.jbpm-dash.assembly.source.artifact.type}</type>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <!-- Generates jbpm-dashboard stuff and distribution. -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>ant-build-dynamic-module-jbpm-dashboard</id>
                <phase>package</phase>
                <configuration>
                  <target>
                    <property name="static-modules-list-file" value="${eap-modules.static.list.file}"/>
                    <property name="static-modules-source-path" value="${eap-modules.source.path}"/>
                    <property name="dynamic-modules-output-path" value="${eap-modules.dynamic.output.path}"/>
                    <property name="dynamic-module-assembly-output-file"
                              value="${eap-modules.dynamic.jbpm-dash.assembly.output.file}"/>
                    <property name="dynamic-module-assembly-war-source"
                              value="${eap-modules.dynamic.jbpm-dash.assembly.source.artifact.groupdId}:${eap-modules.dynamic.jbpm-dash.assembly.source.artifact.artifactId}:${eap-modules.dynamic.jbpm-dash.assembly.source.artifact.type}:${eap-modules.dynamic.jbpm-dash.assembly.source.artifact.classifier}"/>
                    <property name="dynamic-module-assembly-id" value="${eap-modules.jbpm-dashbuilder.assembly.id}"/>
                    <property name="templates.path" value="${eap-modules.templates.path}"/>
                    <property name="patches.path" value="${eap-modules.patches.path}"/>
                    <property name="eap-configuration-file" value="${eap-modules.eap-configuration.path}"/>
                    <property name="temp.path" value="${eap-modules.temp.path}"/>
                    <property name="scripts.path" value="${eap-modules.scripts.path}"/>

                    <taskdef resource="net/sf/antcontrib/antlib.xml" uri="net.sf.antcontrib"
                             classpathref="maven.compile.classpath"/>

                    <echo>Creating stuff for module ${eap-modules.dynamic.jbpm-dash.name}</echo>
                    <ant antfile="${eap-modules.core.output.path}/eap-modules/scripts/build-dynamic-module.xml"
                         target="main" inheritRefs="true">
                      <property name="module-name" value="${eap-modules.dynamic.jbpm-dash.name}"/>
                    </ant>

                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <!-- Assembly the jbpm-dashboard dynamic module. -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <finalName>${eap-modules.assembly.name}</finalName>
              <descriptors combine.children="append">
                <descriptor>${eap-modules.dynamic.jbpm-dash.assembly.output.file}</descriptor>
              </descriptors>
              <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
              </archive>
            </configuration>
          </plugin>

        </plugins>
      </build>
    </profile>

    <!-- Deploy all BPMS artifacts into a JBoss EAP installation.
          This profile requires a system propety:
            - eap-path: The filesystema path where JBoss EAP is installed.
              example: -Deap-path=/home/romartin/development/EAP-6.1.1/jboss-eap-6.1
          - NOTE: Do not use "clean" target when executing this profile, the generated artifacts in target directory must exist.

          Usage example:
          =============
          mvn package -Pdeploy-bpms -Deap-path=/home/romartin/development/EAP-6.1.1/jboss-eap-6.1
    -->
    <profile>
      <id>deploy-bpms</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <property>
          <name>deploy-bpms</name>
        </property>
      </activation>
      <build>
        <plugins>
          <!-- Deploys BPMS artifacts into a JBoss EAP installation. -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>ant-deploy-bpms</id>
                <phase>package</phase>
                <configuration>
                  <target>
                    <property name="static-module" value="${project.build.directory}${file.separator}${eap-modules.assembly.name}-${eap-modules.static-layer.assembly.id}.zip"/>
                    <property name="kie-wb-module" value="${project.build.directory}${file.separator}${eap-modules.assembly.name}-${eap-modules.kie-wb-webapp.assembly.id}.war"/>
                    <property name="jbpm-dashbuilder-module" value="${project.build.directory}${file.separator}${eap-modules.assembly.name}-${eap-modules.jbpm-dashbuilder.assembly.id}.war"/>

                    <taskdef resource="net/sf/antcontrib/antlib.xml" uri="net.sf.antcontrib"
                             classpathref="maven.compile.classpath"/>
                    <echo level="info">Deploying ${static-module} into ${eap-path}</echo>
                    <echo level="info">Deploying ${kie-wb-module} into ${eap-path}</echo>
                    <echo level="info">Deploying ${jbpm-dashbuilder-module} into ${eap-path}</echo>

                    <ant antfile="${eap-modules.core.output.path}/eap-modules/scripts/build-utils.xml"
                         target="deploy-on-eap" inheritRefs="true">
                      <property name="eap-path" value="${eap-path}"/>
                      <property name="static-module-path" value="${static-module}"/>
                      <property name="dynamic-modules-paths" value="${kie-wb-module},${jbpm-dashbuilder-module}"/>
                    </ant>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

  </profiles>

</project>
