<?xml version="1.0" encoding="UTF-8"?>
<!--

  This file is part of the Meeds project (https://meeds.io/).
  Copyright (C) 2020 Meeds Association
  contact@meeds.io
  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 3 of the License, or (at your option) any later version.
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.
  You should have received a copy of the GNU Lesser General Public License
  along with this program; if not, write to the Free Software Foundation,
  Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

-->
<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>
    <groupId>io.meeds.distribution</groupId>
    <artifactId>plf-packaging</artifactId>
    <version>7.2.0-M15</version>
  </parent>
  <artifactId>plf-community-tomcat-standalone</artifactId>
  <packaging>pom</packaging>
  <name>Meeds:: Meeds:: Meeds Public Distribution - Packaging - Community Tomcat Standalone</name>
  <dependencies>
    <!-- This artifact is needed to configure Platform in community mode -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>plf-community-edition-service</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>plf-configuration</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- Get all shared dependencies used by PLF -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>plf-dependencies</artifactId>
      <type>pom</type>
      <scope>runtime</scope>
    </dependency>
    <!-- Get required additional files for Tomcat package -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>plf-tomcat-resources</artifactId>
      <type>zip</type>
      <scope>runtime</scope>
    </dependency>
    <!-- Build resource used to import license related files -->
    <dependency>
      <groupId>org.exoplatform.resources</groupId>
      <artifactId>exo-lgpl-license-resource-bundle</artifactId>
      <!-- It's version is set in parent pom -->
      <version>${version.exo-lgpl-license-resource-bundle}</version>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
  <build>
    <!-- The name that we'll use for our distribution directory -->
    <finalName>meeds-community-${project.version}</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/local-catalog</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/catalog</directory>
                  <filtering>true</filtering>
                  <includes>
                    <include>*.json</include>
                  </includes>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>create-timestamp</goal>
            </goals>
            <configuration>
              <timestampFormat>dd/MM/yyyy</timestampFormat>
              <timestampPropertyName>build.date</timestampPropertyName>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>apache-tomcat</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.apache.tomcat</groupId>
                  <artifactId>tomcat</artifactId>
                  <type>zip</type>
                  <outputDirectory>${project.build.directory}/${project.build.finalName}/dependencies/apache-tomcat</outputDirectory>
                  <includes>apache-tomcat*/**</includes>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
        </configuration>
        <executions>
          <!-- Create the distribution directory with all content -->
          <execution>
            <id>plf-standalone-tomcat-distribution-content</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <attach>false</attach>
              <descriptorRefs>
                <descriptorRef>plf-standalone-default-tomcat-extract-dependencies</descriptorRef>
                <descriptorRef>plf-standalone-default-tomcat-distribution-content</descriptorRef>
              </descriptorRefs>
              <filters>
                <!-- Default server.xml is using HSQLDB -->
                <filter>${project.build.directory}/${project.build.finalName}/dependencies/plf-tomcat-resources/conf/hsqldb.filters.properties</filter>
              </filters>
            </configuration>
          </execution>
          <!-- server.xml file for HSQLDB -->
          <execution>
            <id>plf-server-xml-hsqldb</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <attach>false</attach>
              <descriptorRefs>
                <descriptorRef>plf-standalone-tomcat-server-xml-hsqldb</descriptorRef>
              </descriptorRefs>
              <filters>
                <filter>${project.build.directory}/${project.build.finalName}/dependencies/plf-tomcat-resources/conf/hsqldb.filters.properties</filter>
              </filters>
            </configuration>
          </execution>
          <!-- server.xml file for MySQL -->
          <execution>
            <id>plf-server-xml-mysql</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <attach>false</attach>
              <descriptorRefs>
                <descriptorRef>plf-standalone-tomcat-server-xml-mysql</descriptorRef>
              </descriptorRefs>
              <filters>
                <filter>${project.build.directory}/${project.build.finalName}/dependencies/plf-tomcat-resources/conf/mysql.filters.properties</filter>
              </filters>
            </configuration>
          </execution>
          <!-- server.xml file for Postgres -->
          <execution>
            <id>plf-server-xml-postgres</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <attach>false</attach>
              <descriptorRefs>
                <descriptorRef>plf-standalone-tomcat-server-xml-postgres</descriptorRef>
              </descriptorRefs>
              <filters>
                <filter>${project.build.directory}/${project.build.finalName}/dependencies/plf-tomcat-resources/conf/postgres.filters.properties</filter>
              </filters>
            </configuration>
          </execution>
          <!-- server.xml file for Postgresplus -->
          <execution>
            <id>plf-server-xml-postgresplus</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <attach>false</attach>
              <descriptorRefs>
                <descriptorRef>plf-standalone-tomcat-server-xml-postgresplus</descriptorRef>
              </descriptorRefs>
              <filters>
                <filter>${project.build.directory}/${project.build.finalName}/dependencies/plf-tomcat-resources/conf/postgresplus.filters.properties</filter>
              </filters>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>plf-assemblies</artifactId>
            <version>${project.version}</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>remove-tomcat-version-from-folder</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <!-- Remove tomcat version from folder name to avoid declaring tomcat version in current module
                  for more flexibility when upgrading Tomcat -->
                <move todir="${project.build.directory}/${project.build.finalName}/dependencies/apache-tomcat">
                  <fileset dir="${project.build.directory}/${project.build.finalName}/dependencies/apache-tomcat/">
                    <include name="**/apache-tomcat-*/**" />
                  </fileset>
                  <mapper type="regexp" from="^(.*)apache-tomcat-([^/]+)(.*)" to="\1/\3" />
                </move>
              </target>
            </configuration>
          </execution>
          <execution>
            <id>install-add-ons</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target name="install-add-ons">
                <echo message="Installing add-ons..." />
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.layout.id}:${addon.meeds.layout.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.kudos.id}:${addon.meeds.kudos.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.perk-store.id}:${addon.meeds.perk-store.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.wallet.id}:${addon.meeds.wallet.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.gamification.id}:${addon.meeds.gamification.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.app-center.id}:${addon.meeds.app-center.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.notes.id}:${addon.meeds.notes.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.tasks.id}:${addon.meeds.tasks.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.analytics.id}:${addon.meeds.analytics.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.poll.id}:${addon.meeds.poll.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.content.id}:${addon.meeds.content.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.gamification-github.id}:${addon.meeds.gamification-github.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.gamification-twitter.id}:${addon.meeds.gamification-twitter.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.gamification-evm.id}:${addon.meeds.gamification-evm.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.deeds-tenant.id}:${addon.meeds.deeds-tenant.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.gamification-crowdin.id}:${addon.meeds.gamification-crowdin.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.pwa.id}:${addon.meeds.pwa.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
                <exec dir="${project.basedir}" executable="${project.build.directory}/${project.build.finalName}/${project.build.finalName}/addon${addon.manager.extension}" failonerror="true">
                  <arg line="install ${addon.meeds.ide.id}:${addon.meeds.ide.version} --catalog=file://${project.build.directory}/local-catalog/meeds-distrib-catalog.json" />
                </exec>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>create-archive</id>
      <activation>
        <property>
          <name>!skip-archive</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <!-- Create the distribution zip and attach it to maven -->
              <execution>
                <id>plf-standalone-tomcat-zip</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <descriptorRefs>
                    <descriptorRef>plf-standalone-tomcat-zip</descriptorRef>
                  </descriptorRefs>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>plf-assemblies</artifactId>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>exo-release</id>
      <build>
        <plugins>
          <!-- Build License related files bundled directly in the archive -->
          <!-- This is a long process and really useful only for released stuffs -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-remote-resources-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>process</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <resourceBundles>
                <resourceBundle>org.exoplatform.resources:exo-lgpl-license-resource-bundle:${version.exo-lgpl-license-resource-bundle}</resourceBundle>
              </resourceBundles>
              <includeScope>compile</includeScope>
              <excludeGroupIds>io.meeds,org.exoplatform,org.exoplatform.addons,com.exoplatform</excludeGroupIds>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
