<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<!-- $Rev: 600338 $ $Date: 2007-12-02 09:08:04 -0800 (Sun, 02 Dec 2007) $ -->

<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">

  <parent>
    <artifactId>tomee</artifactId>
    <groupId>org.apache.tomee</groupId>
    <version>8.0.13</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <artifactId>apache-tomee</artifactId>
  <packaging>jar</packaging>
  <name>TomEE :: TomEE :: Apache TomEE</name>

  <properties>
    <tomee.build.name>${project.groupId}.tomee.tomee</tomee.build.name>
    <webprofile.work-dir>${project.build.directory}/webprofile-work-dir</webprofile.work-dir>
    <plus.work-dir>${project.build.directory}/plus-work-dir</plus.work-dir>
    <plume.work-dir>${project.build.directory}/plume-work-dir</plume.work-dir>
    <microprofile.work-dir>${project.build.directory}/microprofile-work-dir</microprofile.work-dir>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss.shrinkwrap</groupId>
      <artifactId>shrinkwrap-api</artifactId>
      <version>1.2.6</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss.shrinkwrap</groupId>
      <artifactId>shrinkwrap-impl-base</artifactId>
      <version>1.2.6</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>jline</groupId>
      <artifactId>jline</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant-nodeps</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <artifactId>commons-lang3</artifactId>
      <groupId>org.apache.commons</groupId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat</artifactId>
      <type>zip</type>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tomee-common</artifactId>
      <version>${project.version}</version>
      <type>jar</type>
      <scope>provided</scope>
    </dependency>
    <dependency> <!-- to be sure to have it -->
      <groupId>${project.groupId}</groupId>
      <artifactId>tomee-webapp</artifactId>
      <version>${project.version}</version>
      <type>war</type>
      <scope>provided</scope>
    </dependency>
    <dependency> <!-- to be sure to have it -->
      <groupId>${project.groupId}</groupId>
      <artifactId>tomee-plus-webapp</artifactId>
      <version>${project.version}</version>
      <type>war</type>
      <scope>provided</scope>
    </dependency>
    <dependency> <!-- to be sure to have it -->
      <groupId>${project.groupId}</groupId>
      <artifactId>tomee-plume-webapp</artifactId>
      <version>${project.version}</version>
      <type>war</type>
      <scope>provided</scope>
    </dependency>
    <dependency> <!-- to be sure to have it -->
      <groupId>${project.groupId}</groupId>
      <artifactId>tomee-microprofile-webapp</artifactId>
      <version>${project.version}</version>
      <type>war</type>
      <scope>provided</scope>
    </dependency>

    <!-- needed for EJBContainer impl so scope compile -->
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tomee-util</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-client</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-core</artifactId>
      <version>${project.version}</version>
      <type>jar</type>
    </dependency>

    <!-- needed to compile in intellij for tomcat patches -->
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-catalina</artifactId>
      <version>${tomcat.version}</version>
      <scope>provided</scope>
    </dependency>

    <!-- needed for BOM generation -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.20</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
      </testResource>
    </testResources>
  </build>

  <profiles>
    <profile>
      <id>all</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <includes>
                <include>**/RemoteTomEEEJBContainer*.class</include>
                <include>**/META-INF/services/javax.ejb.spi.EJBContainerProvider</include>
              </includes>
              <archive combine.children="append">
                <manifestEntries>
                  <Automatic-Module-Name>${tomee.build.name}</Automatic-Module-Name>
                </manifestEntries>
              </archive>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>org.apache.tomee.bom</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
              <nonFilteredFileExtensions>
                <nonFilteredFileExtension>exe</nonFilteredFileExtension>
              </nonFilteredFileExtensions>
            </configuration>
            <executions>
              <execution>
                <id>filter-resources</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>resources</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>copy-tomcat-for-webprofile</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.tomcat</groupId>
                      <artifactId>tomcat</artifactId>
                      <version>${tomcat.version}</version>
                      <type>zip</type>
                      <outputDirectory>${webprofile.work-dir}</outputDirectory>
                      <destFileName>apache-tomcat-${tomcat.version}.zip</destFileName>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
              <execution>
                <id>copy-tomcat-for-plus</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.tomcat</groupId>
                      <artifactId>tomcat</artifactId>
                      <version>${tomcat.version}</version>
                      <type>zip</type>
                      <outputDirectory>${plus.work-dir}</outputDirectory>
                      <destFileName>apache-tomcat-${tomcat.version}.zip</destFileName>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
              <execution>
                <id>copy-tomcat-for-plume</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.tomcat</groupId>
                      <artifactId>tomcat</artifactId>
                      <version>${tomcat.version}</version>
                      <type>zip</type>
                      <outputDirectory>${plume.work-dir}</outputDirectory>
                      <destFileName>apache-tomcat-${tomcat.version}.zip</destFileName>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
              <execution>
                <id>copy-tomcat-for-microprofile</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.tomcat</groupId>
                      <artifactId>tomcat</artifactId>
                      <version>${tomcat.version}</version>
                      <type>zip</type>
                      <outputDirectory>${microprofile.work-dir}</outputDirectory>
                      <destFileName>apache-tomcat-${tomcat.version}.zip</destFileName>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>groovy-maven-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>org.apache.tomee</groupId>
                <artifactId>javaee-api</artifactId>
                <version>${version.javaee-api}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.tomee.bom</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
              </dependency>
              <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>openejb-jpa-integration</artifactId>
                <version>${project.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.xbean</groupId>
                <artifactId>xbean-asm9-shaded</artifactId>
                <version>${xbeanVersion}</version>
              </dependency>
              <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                <version>${version.groovy}</version>
              </dependency>
            </dependencies>
            <configuration>
              <classpathScope>runtime</classpathScope>
              <scriptpath>
                <path>${project.basedir}/src/main/groovy</path>
              </scriptpath>
              <defaults>
                <testSectionsFile>${project.basedir}/sections.properties</testSectionsFile>
                <logOutputDirectory>${project.build.directory}/logs</logOutputDirectory>
                <backupLogs>true</backupLogs>
              </defaults>
            </configuration>
            <executions>
              <execution>
                <id>execute-web-profile-installer</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <properties>
                    <tomee.workdir>${webprofile.work-dir}</tomee.workdir>
                    <tomee.webapp>tomee-webapp</tomee.webapp>
                    <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
                  </properties>
                  <source>
                    new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
                  </source>
                </configuration>
              </execution>
              <execution>
                <id>execute-plus-installer</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <properties>
                    <tomee.workdir>${plus.work-dir}</tomee.workdir>
                    <tomee.webapp>tomee-plus-webapp</tomee.webapp>
                    <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
                  </properties>
                  <source>
                    new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
                  </source>
                </configuration>
              </execution>
              <execution>
                <id>execute-plume-installer</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <properties>
                    <tomee.workdir>${plume.work-dir}</tomee.workdir>
                    <tomee.webapp>tomee-plume-webapp</tomee.webapp>
                    <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
                  </properties>
                  <source>
                    new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
                  </source>
                </configuration>
              </execution>
              <execution>
                <id>execute-microprofile-installer</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <properties>
                    <tomee.workdir>${microprofile.work-dir}</tomee.workdir>
                    <tomee.webapp>tomee-microprofile-webapp</tomee.webapp>
                    <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
                  </properties>
                  <source>
                    new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
                  </source>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>webprofile</id>
                <phase>package</phase>
                <configuration>
                  <descriptors>
                    <descriptor>src/main/assembly/tomee-webprofile.xml</descriptor>
                  </descriptors>
                  <attach>false</attach>
                  <appendAssemblyId>false</appendAssemblyId>
                  <finalName>apache-tomee-webprofile-${project.version}</finalName>
                </configuration>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
              <execution>
                <id>plus</id>
                <phase>package</phase>
                <configuration>
                  <descriptors>
                    <descriptor>src/main/assembly/tomee-plus.xml</descriptor>
                  </descriptors>
                  <attach>false</attach>
                  <appendAssemblyId>false</appendAssemblyId>
                  <finalName>apache-tomee-plus-${project.version}</finalName>
                </configuration>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
              <execution>
                <id>plume</id>
                <phase>package</phase>
                <configuration>
                  <descriptors>
                    <descriptor>src/main/assembly/tomee-plume.xml</descriptor>
                  </descriptors>
                  <attach>false</attach>
                  <appendAssemblyId>false</appendAssemblyId>
                  <finalName>apache-tomee-plume-${project.version}</finalName>
                </configuration>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
              <execution>
                <id>microprofile</id>
                <phase>package</phase>
                <configuration>
                  <descriptors>
                    <descriptor>src/main/assembly/tomee-microprofile.xml</descriptor>
                  </descriptors>
                  <attach>false</attach>
                  <appendAssemblyId>false</appendAssemblyId>
                  <finalName>apache-tomee-microprofile-${project.version}</finalName>
                </configuration>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <tstamp>
                      <format property="today" pattern="MMM d yyyy" locale="en" timezone="UTC" />
                      <format property="tstamp" pattern="HH:mm:ss" locale="en" timezone="UTC" />
                    </tstamp>
                    <copy file="src/template/patch/java/org/apache/catalina/util/ServerInfo.properties" tofile="src/patch/java/org/apache/catalina/util/ServerInfo.properties" />
                    <replace file="src/patch/java/org/apache/catalina/util/ServerInfo.properties" token="@TOMCAT-VERSION-REPLACED-BY-MAVEN@" value="${tomcat.version}" />
                    <replace file="src/patch/java/org/apache/catalina/util/ServerInfo.properties" token="@TOMEE-VERSION-REPLACED-BY-MAVEN@" value="${tomee.version}" />
                    <replace file="src/patch/java/org/apache/catalina/util/ServerInfo.properties" token="@DATE-REPLACED-BY-MAVEN@" value="${today} ${tstamp} UTC" />
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-artifacts</id>
                <phase>package</phase>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-webprofile-${project.version}.zip</file>
                      <type>zip</type>
                      <classifier>webprofile</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-webprofile-${project.version}.tar.gz</file>
                      <type>tar.gz</type>
                      <classifier>webprofile</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-plus-${project.version}.zip</file>
                      <type>zip</type>
                      <classifier>plus</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-plus-${project.version}.tar.gz</file>
                      <type>tar.gz</type>
                      <classifier>plus</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-plume-${project.version}.zip</file>
                      <type>zip</type>
                      <classifier>plume</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-plume-${project.version}.tar.gz</file>
                      <type>tar.gz</type>
                      <classifier>plume</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-microprofile-${project.version}.zip</file>
                      <type>zip</type>
                      <classifier>microprofile</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-microprofile-${project.version}.tar.gz</file>
                      <type>tar.gz</type>
                      <classifier>microprofile</classifier>
                    </artifact>
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.tomee.patch</groupId>
            <artifactId>tomee-patch-plugin</artifactId>
            <configuration>
              <select>apache-tomee-(plus|plume|webprofile|microprofile).*\.zip</select>
              <skipTransform>true</skipTransform>
              <createTarGz>true</createTarGz>
    <!--          <sourceExcludes>-->
    <!--            <exclude>org/apache/cxf</exclude>-->
    <!--          </sourceExcludes>-->
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>run</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>java</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <includeProjectDependencies>true</includeProjectDependencies>
              <includePluginDependencies>false</includePluginDependencies>
              <classpathScope>test</classpathScope>
              <mainClass>org.apache.tomee.bootstrap.GenerateBoms</mainClass>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>plume</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <includes>
                <include>**/RemoteTomEEEJBContainer*.class</include>
                <include>**/META-INF/services/javax.ejb.spi.EJBContainerProvider</include>
              </includes>
              <archive combine.children="append">
                <manifestEntries>
                  <Automatic-Module-Name>${tomee.build.name}</Automatic-Module-Name>
                </manifestEntries>
              </archive>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
              <nonFilteredFileExtensions>
                <nonFilteredFileExtension>exe</nonFilteredFileExtension>
              </nonFilteredFileExtensions>
            </configuration>
            <executions>
              <execution>
                <id>filter-resources</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>resources</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>copy-tomcat-for-plume</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                  <artifactItems>
                    <artifactItem>
                      <groupId>org.apache.tomcat</groupId>
                      <artifactId>tomcat</artifactId>
                      <version>${tomcat.version}</version>
                      <type>zip</type>
                      <outputDirectory>${plume.work-dir}</outputDirectory>
                      <destFileName>apache-tomcat-${tomcat.version}.zip</destFileName>
                    </artifactItem>
                  </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>groovy-maven-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>org.apache.tomee</groupId>
                <artifactId>javaee-api</artifactId>
                <version>${version.javaee-api}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.tomee.bom</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
              </dependency>
              <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>openejb-jpa-integration</artifactId>
                <version>${project.version}</version>
              </dependency>
              <dependency>
                <groupId>org.apache.xbean</groupId>
                <artifactId>xbean-asm9-shaded</artifactId>
                <version>${xbeanVersion}</version>
              </dependency>
              <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-all</artifactId>
                <version>${version.groovy}</version>
              </dependency>
            </dependencies>
            <configuration>
              <classpathScope>runtime</classpathScope>
              <scriptpath>
                <path>${project.basedir}/src/main/groovy</path>
              </scriptpath>
              <defaults>
                <testSectionsFile>${project.basedir}/sections.properties</testSectionsFile>
                <logOutputDirectory>${project.build.directory}/logs</logOutputDirectory>
                <backupLogs>true</backupLogs>
              </defaults>
            </configuration>
            <executions>
              <execution>
                <id>execute-plume-installer</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>execute</goal>
                </goals>
                <configuration>
                  <properties>
                    <tomee.workdir>${plume.work-dir}</tomee.workdir>
                    <tomee.webapp>tomee-plume-webapp</tomee.webapp>
                    <remove.datestamp>${tomee.version}, ${project.version}, ${cxf.version}</remove.datestamp>
                  </properties>
                  <source>
                    new commands.SetupCommand(pom: this, log: log, project: project, ant: ant, properties: properties).execute()
                  </source>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>plume</id>
                <phase>package</phase>
                <configuration>
                  <descriptors>
                    <descriptor>src/main/assembly/tomee-plume.xml</descriptor>
                  </descriptors>
                  <attach>false</attach>
                  <appendAssemblyId>false</appendAssemblyId>
                  <finalName>apache-tomee-plume-${project.version}</finalName>
                </configuration>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-artifacts</id>
                <phase>package</phase>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-plume-${project.version}.zip</file>
                      <type>zip</type>
                      <classifier>plume</classifier>
                    </artifact>
                    <artifact>
                      <file>${project.build.directory}/apache-tomee-plume-${project.version}.tar.gz</file>
                      <type>tar.gz</type>
                      <classifier>plume</classifier>
                    </artifact>
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.tomee.patch</groupId>
            <artifactId>tomee-patch-plugin</artifactId>
            <configuration>
              <select>apache-tomee-(plus|plume|webprofile|microprofile).*\.zip</select>
              <skipTransform>true</skipTransform>
              <createTarGz>true</createTarGz>
    <!--          <sourceExcludes>-->
    <!--            <exclude>org/apache/cxf</exclude>-->
    <!--          </sourceExcludes>-->
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>run</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>java</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <includeProjectDependencies>true</includeProjectDependencies>
              <includePluginDependencies>false</includePluginDependencies>
              <classpathScope>test</classpathScope>
              <mainClass>org.apache.tomee.bootstrap.GenerateBoms</mainClass>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
