<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-brms</artifactId>
  <name>KIE JBoss EAP integration - BRMS distribution</name>

  <dependencies>

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

    <!--
      BZ-1035414: In order to generate same content for some modules (same resources), some artifacts
      are not provided by the org.kie:kie-drools-wb-webapp:war, so these ones must be included here manually.
    -->
    <dependency> <!-- Provides the dependency for commons-logging:-logging-api:jar -->
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-ui</artifactId>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-persistence-jpa</artifactId>
    </dependency>
    <dependency> <!-- Provides the dependency for org.jboss.seam.seam-transaction-api:jar -->
      <groupId>org.kie.remote</groupId>
      <artifactId>kie-services-remote</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.remote</groupId>
      <artifactId>kie-services-client</artifactId>
    </dependency>

  </dependencies>

  <properties>

    <!-- The assembly id for generated artifacts. -->
    <eap-modules.static-layer.assembly.id>brms-layer</eap-modules.static-layer.assembly.id>
    <eap-modules.kie-drools-wb-webapp.assembly.id>org.kie.kie-drools-wb-webapp</eap-modules.kie-drools-wb-webapp.assembly.id>

  </properties>

  <!--
      PROFILES:
      ========
        - brms-static-layer ==> Generates the static brms layer for EAP in a ZIP format.
        - brms ==> Generates the kie-drools-wb WAR (BRMS) that runs with the brms layer.

        - **NOTE**: All profiles are enabled by default.
  -->
  <profiles>
    <!-- Create static layer distribution for BRMS. -->
    <profile>
      <id>brms-static-layer</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <property>
          <name>brms-static-layer</name>
        </property>
      </activation>
      <properties>
        <eap-modules.brms.static.output.path>${project.build.directory}/eap-modules-generated/static-modules/brms
        </eap-modules.brms.static.output.path>
        <eap-modules.brms.static.assembly.output.file>${eap-modules.brms.static.output.path}/modules-assembly.xml
        </eap-modules.brms.static.assembly.output.file>
      </properties>
      <build>
        <plugins>
          <!-- Generates the BRMS static modules stuff. -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>ant-generate-brms-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.brms.static.output.path}"/>
                    <property name="static-modules-list-file" value="${eap-modules.static.list.file}"/>
                    <property name="static-modules-layer-name" value="brms"/>
                    <property name="static-modules-assembly-id" value="${eap-modules.static-layer.assembly.id}"/>
                    <property name="static-modules-assembly-output-file"
                              value="${eap-modules.brms.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 BRMS 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 BRMS 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 BRMS static modules distribution. -->
                <descriptor>${eap-modules.brms.static.assembly.output.file}</descriptor>
              </descriptors>
              <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
              </archive>
            </configuration>
          </plugin>

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

    <!-- Create distribution for BRMS (kie-drools-wb). -->
    <profile>
      <id>brms</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <property>
          <name>brms</name>
        </property>
      </activation>
      <properties>
        <!-- The skinny BRMS war to generate will be build from source artifact: org.kie:kie-drools-wb-distribution-wars:war:eap-6_1 -->
        <eap-modules.dynamic.kie-drools-wb.name>org.kie.kie-drools-wb-webapp</eap-modules.dynamic.kie-drools-wb.name>
        <eap-modules.dynamic.kie-drools-wb.assembly.output.file>
          ${eap-modules.dynamic.output.path}/kie-drools-wb-modules-assembly.xml
        </eap-modules.dynamic.kie-drools-wb.assembly.output.file>
        <eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.groupdId>org.kie
        </eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.groupdId>
        <eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.artifactId>kie-drools-wb-distribution-wars
        </eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.artifactId>
        <eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.type>war
        </eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.type>
        <eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.classifier>eap-6_1
        </eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.classifier>
      </properties>
      <dependencies>
        <!-- This dependency is used as source artifact for maven assembly. -->
        <dependency>
          <groupId>${eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.groupdId}</groupId>
          <artifactId>${eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.artifactId}</artifactId>
          <version>${project.version}</version> <!-- TODO: Remove version here and set into kie-parent. -->
          <classifier>${eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.classifier}</classifier>
          <type>${eap-modules.dynamic.kie-drools-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-brms</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-drools-wb.assembly.output.file}"/>
                    <property name="dynamic-module-assembly-war-source"
                              value="${eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.groupdId}:${eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.artifactId}:${eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.type}:${eap-modules.dynamic.kie-drools-wb.assembly.source.artifact.classifier}"/>
                    <property name="dynamic-module-assembly-id" value="${eap-modules.kie-drools-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-drools-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-drools-wb.name}"/>
                    </ant>

                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <!-- Assembly the kie-drools-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-drools-wb.assembly.output.file}</descriptor>
              </descriptors>
              <archive>
                <addMavenDescriptor>false</addMavenDescriptor>
              </archive>
            </configuration>
          </plugin>

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

    <!-- Deploy all BRMS 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-brms -Deap-path=/home/romartin/development/EAP-6.1.1/jboss-eap-6.1
    -->
    <profile>
      <id>deploy-brms</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <property>
          <name>deploy-brms</name>
        </property>
      </activation>
      <build>
        <plugins>
          <!-- Deploys BRMS artifacts into a JBoss EAP installation. -->
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>ant-deploy-brms</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-drools-wb-module" value="${project.build.directory}${file.separator}${eap-modules.assembly.name}-${eap-modules.kie-drools-wb-webapp.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-drools-wb-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-drools-wb-module}"/>
                    </ant>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

  </profiles>

</project>
