<?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>7.1.4</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>

  <artifactId>tomee-microprofile-webapp</artifactId>
  <name>OpenEJB :: TomEE :: MicroProfile Webapp</name>
  <packaging>war</packaging>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>tomee-webapp</artifactId>
      <version>${project.version}</version>
      <type>war</type>
    </dependency>

    <dependency>
      <groupId>org.eclipse.microprofile.config</groupId>
      <artifactId>microprofile-config-api</artifactId>
      <version>${microprofile.config.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo.config</groupId>
      <artifactId>geronimo-config-impl</artifactId>
      <version>${microprofile.config.impl.version}</version>
    </dependency>

    <dependency>
      <groupId>org.eclipse.microprofile.jwt</groupId>
      <artifactId>microprofile-jwt-auth-api</artifactId>
      <version>${microprofile.jwt.version}</version>
    </dependency>

    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>mp-jwt</artifactId>
      <version>${microprofile.jwt.impl.version}</version>
    </dependency>

    <dependency>
      <groupId>org.eclipse.microprofile.fault-tolerance</groupId>
      <artifactId>microprofile-fault-tolerance-api</artifactId>
      <version>${microprofile.fault-tolerance.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo.safeguard</groupId>
      <artifactId>safeguard-impl</artifactId>
      <version>${microprofile.fault-tolerance.impl.version}</version>
    </dependency>

    <!-- Health has a beans.xml with CDI 2.0
    <dependency>
      <groupId>org.eclipse.microprofile.health</groupId>
      <artifactId>microprofile-health-api</artifactId>
      <version>${microprofile.health.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo</groupId>
      <artifactId>geronimo-health</artifactId>
      <version>${microprofile.health.impl.version}</version>
    </dependency>
    -->

    <!-- Metrics is not working with OWB 1.x. Apparently it requires OWB 2.x
    <dependency>
      <groupId>org.eclipse.microprofile.metrics</groupId>
      <artifactId>microprofile-metrics-api</artifactId>
      <version>${microprofile.metrics.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo</groupId>
      <artifactId>geronimo-metrics</artifactId>
      <version>${microprofile.metrics.impl.version}</version>
    </dependency>
    -->
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>war</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptors>
            <descriptor>src/main/assembly/war.xml</descriptor>
          </descriptors>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
