<?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$ $Date$ -->

<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>
    <artifactId>container</artifactId>
    <groupId>org.apache.tomee</groupId>
    <version>8.0.6</version>
  </parent>

  <artifactId>openejb-core</artifactId>
  <packaging>jar</packaging>
  <name>TomEE :: Container :: Core</name>

  <properties>
    <tomee.build.name>${project.groupId}.container.core</tomee.build.name>
    <openejb.osgi.import.pkg>
      javax.annotation;version="[1.1.0,2.0.0)",
      javax.annotation.security;version="[1.1.0,2.0.0)",
      javax.annotation.sql;version="[1.1.0,2.0.0)",
      javax.crypto,
      javax.crypto.spec,
      javax.el,
      javax.decorator;resolution:=optional,
      javax.ejb,
      javax.ejb.embeddable,
      javax.ejb.spi,
      javax.enterprise.concurrent,
      javax.enterprise.context,
      javax.enterprise.context.spi,
      javax.enterprise.deploy.model;resolution:=optional,
      javax.enterprise.deploy.shared;resolution:=optional,
      javax.enterprise.deploy.spi;resolution:=optional,
      javax.enterprise.deploy.spi.exceptions;resolution:=optional,
      javax.enterprise.deploy.spi.factories;resolution:=optional,
      javax.enterprise.deploy.spi.status;resolution:=optional,
      javax.enterprise.event,
      javax.enterprise.inject,
      javax.enterprise.inject.spi,
      javax.inject,
      javax.interceptor,
      javax.jms;resolution:=optional,
      javax.jws,
      javax.mail;resolution:=optional;version="[1.4,2)",
      javax.management,
      javax.management.j2ee,
      javax.management.loading,
      javax.management.openmbean,
      javax.naming,
      javax.naming.spi,
      javax.persistence,
      javax.persistence.criteria,
      javax.persistence.metamodel,
      javax.persistence.spi,
      javax.resource,
      javax.resource.spi,
      javax.resource.spi.endpoint,
      javax.resource.spi.work,
      javax.security.auth,
      javax.security.auth.callback,
      javax.security.auth.login,
      javax.security.auth.message.callback,
      javax.security.auth.spi,
      javax.security.jacc,
      javax.servlet,
      javax.servlet.http,
      javax.servlet.jsp,
      javax.sql,
      javax.transaction;version="[1.1.0,2.0.0)",
      javax.transaction.xa;version="[1.1.0,2.0.0)",
      javax.validation,
      javax.validation.bootstrap,
      javax.ws.rs,
      javax.ws.rs.core,
      javax.ws.rs.ext,
      javax.wsdl;resolution:=optional,,
      javax.wsdl.extensions.http;resolution:=optional,,
      javax.wsdl.extensions.soap;resolution:=optional,,
      javax.wsdl.factory;resolution:=optional,,
      javax.wsdl.xml;resolution:=optional,,
      javax.xml.bind,
      javax.xml.bind.annotation,
      javax.xml.bind.annotation.adapters,
      javax.xml.datatype,
      javax.xml.namespace,
      javax.xml.parsers,
      javax.xml.registry;resolution:=optional,
      javax.xml.rpc;resolution:=optional,
      javax.xml.rpc.handler;resolution:=optional,
      javax.xml.transform,
      javax.xml.transform.sax,
      javax.xml.transform.stream,
      javax.xml.validation,
      javax.xml.ws,
      javax.xml.ws.handler,
      javax.xml.ws.soap,
      javax.xml.ws.spi,
      javax.xml.ws.wsaddressing,
      org.apache.activemq.broker;resolution:=optional;version="[5.8,6.0)",
      org.apache.activemq.ra;resolution:=optional;version="[5.8,6.0)",
      org.apache.activemq.store;resolution:=optional;version="[5.8,6.0)",
      org.apache.activemq.store.jdbc;resolution:=optional;version="[5.8,6.0)",
      org.apache.activemq.store.memory;resolution:=optional;version="[5.8,6.0)",
      org.apache.bval.jsr;resolution:=optional,
      org.apache.bval.jsr.resolver;resolution:=optional,
      org.apache.commons.beanutils,
      org.apache.commons.cli;version="[1.2,2)",
      org.apache.commons.dbcp2;resolution:=optional;version="[2,3)",
      org.apache.commons.dbcp2.managed;resolution:=optional;version="[2,3)",
      org.apache.commons.lang;version="[2.6,2.9)",
      org.apache.commons.lang3;version="[3.1,4)",
      org.apache.geronimo.connector;version="[3.0,4)",
      org.apache.geronimo.connector.outbound;version="[3.0,4)",
      org.apache.geronimo.connector.outbound.connectionmanagerconfig;version="[3.0,4)",
      org.apache.geronimo.connector.outbound.connectiontracking;version="[3.0,4)",
      org.apache.geronimo.connector.work;version="[3.0,4)",
      org.apache.geronimo.osgi.locator,
      org.apache.geronimo.transaction.log;version="[3.0,4)",
      org.apache.geronimo.transaction.manager;version="[3.0,4)",
      org.apache.kahadb.util;resolution:=optional;version="[5.4,6)",
      org.apache.log4j;resolution:=optional,
      org.apache.openejb.api;version="[4.0,5)",
      org.apache.openejb.javaagent;version="[4.0,5)",
      org.apache.openejb.jee;version="[4.0,5)",
      org.apache.openejb.jee.bval;version="[4.0,5)",
      org.apache.openejb.jee.jba;version="[4.0,5)",
      org.apache.openejb.jee.jba.cmp;version="[4.0,5)",
      org.apache.openejb.jee.jpa;version="[4.0,5)",
      org.apache.openejb.jee.jpa.unit;version="[4.0,5)",
      org.apache.openejb.jee.oejb2;version="[4.0,5)",
      org.apache.openejb.jee.oejb3;version="[4.0,5)",
      org.apache.openejb.jee.sun;resolution:=optional;version="[4.0,5)",
      org.apache.openejb.jee.wls;version="[4.0,5)",
      org.apache.openejb.loader;version="[4.0,5)",
      org.apache.openejb.client;bundle-version="[4.0,5.0)";resolution:=optional,
      org.apache.openejb.client.proxy;bundle-version="[4.0,5.0)";resolution:=optional,
      org.apache.openejb.client.java;bundle-version="[4.0,5.0)";resolution:=optional,
      org.openejb.client;bundle-version="[4.0,5.0)";resolution:=optional,
      org.apache.openjpa.event;resolution:=optional;version="[2.1,3)",
      org.apache.openjpa.persistence;resolution:=optional;version="[2.1,3)",
      org.apache.webbeans.annotation;version="[1.1,2)",
      org.apache.webbeans.component;version="[1.1,2)",
      org.apache.webbeans.component.creation;version="[1.1,2)",
      org.apache.webbeans.config;version="[1.1,2)",
      org.apache.webbeans.container;version="[1.1,2)",
      org.apache.webbeans.context;version="[1.1,2)",
      org.apache.webbeans.context.creational;version="[1.1,2)",
      org.apache.webbeans.conversation;version="[1.1,2)",
      org.apache.webbeans.decorator;version="[1.1,2)",
      org.apache.webbeans.deployment;version="[1.1,2)",
      org.apache.webbeans.deployment.stereotype;version="[1.1,2)",
      org.apache.webbeans.ee.event;version="[1.1,2)",
      org.apache.webbeans.ejb.common.component;version="[1.0,2)",
      org.apache.webbeans.ejb.common.util;version="[1.0,2)",
      org.apache.webbeans.el;version="[1.1,2)",
      org.apache.webbeans.exception;version="[1.1,2)",
      org.apache.webbeans.exception.inject;version="[1.1,2)",
      org.apache.webbeans.inject;version="[1.1,2)",
      org.apache.webbeans.intercept;version="[1.1,2)",
      org.apache.webbeans.intercept.webbeans;version="[1.1,2)",
      org.apache.webbeans.jms;version="[1.1,2)",
      org.apache.webbeans.logger;version="[1.1,2)",
      org.apache.webbeans.plugins;version="[1.1,2)",
      org.apache.webbeans.portable;version="[1.1,2)",
      org.apache.webbeans.portable.events;version="[1.1,2)",
      org.apache.webbeans.portable.events.discovery;version="[1.1,2)",
      org.apache.webbeans.portable.events.generics;version="[1.1,2)",
      org.apache.webbeans.proxy;version="[1.1,2)",
      org.apache.webbeans.service;version="[1.1,2)",
      org.apache.webbeans.spi;version="[1.1,2)",
      org.apache.webbeans.spi.adaptor;version="[1.1,2)",
      org.apache.webbeans.spi.api;version="[1.1,2)",
      org.apache.webbeans.spi.plugins;version="[1.1,2)",
      org.apache.webbeans.util;version="[1.1,2)",
      org.apache.webbeans.web.context;version="[1.1,2)",
      org.apache.webbeans.xml;version="[1.1,2)",
      org.apache.xbean.asm7;version="[3.1,5)",
      org.apache.xbean.asm7.commons;version="[3.1,5)",
      org.apache.xbean.finder;version="[3.8,4)",
      org.apache.xbean.finder.archive;version="[3.8,4)",
      org.apache.xbean.finder.filter;version="[3.8,4)",
      org.apache.xbean.naming.context;version="[3.8,4)",
      org.apache.xbean.naming.reference;version="[3.8,4)",
      org.apache.xbean.propertyeditor;version="[3.8,4)",
      org.apache.xbean.recipe;version="[3.8,4)",
      org.hsqldb.jdbc;resolution:=optional,
      org.junit.rules;resolution:=optional,
      org.junit.runners;resolution:=optional,
      org.junit.runners.model;resolution:=optional,
      org.testng;resolution:=optional,
      org.omg.CORBA,
      org.osgi.framework,
      org.apache.openejb.quartz;resolution:=optional,
      org.apache.openejb.quartz.impl;resolution:=optional,
      org.apache.openejb.quartz.spi;resolution:=optional,
      org.slf4j;resolution:=optional;version="[1.6,4)",
      org.w3c.dom,
      org.w3c.dom.ls,
      org.xml.sax,
      org.xml.sax.helpers
    </openejb.osgi.import.pkg>
    <openejb.osgi.export>
      '=META-INF.org^.apache^.openejb',
      org.apache.openejb.cdi.*;version=${openejb.osgi.export.version},
      org.apache.openejb*;version=${openejb.osgi.export.version},
      org.apache.openejb;version=${openejb.osgi.export.version}
    </openejb.osgi.export>
    <jacocoArgLine />
  </properties>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
          <!--
          This file is encoded in UTF-16LE so it causes trouble
          as the default encoding is UTF-8. However as it's
          obviously only used as an input file for the corresponding
          properties we're just ignoring it here.
          -->
          <exclude>**/Messages_hi_input.txt</exclude>
        </excludes>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <compilerArgs>
            <arg>-Xlint:path</arg>
          </compilerArgs>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <phase>process-resources</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>${project.groupId}</groupId>
                  <artifactId>openejb-javaagent</artifactId>
                  <version>${project.version}</version>
                  <outputDirectory>${project.build.directory}</outputDirectory>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
          <execution>
            <id>AlternateDriverJarTest</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.apache.derby</groupId>
                  <artifactId>derby</artifactId>
                  <version>${derby.version}</version>
                  <type>jar</type>
                  <overWrite>false</overWrite>
                  <outputDirectory>${project.build.directory}/drivers</outputDirectory>
                  <destFileName>derby-${derby.version}.jar</destFileName>
                </artifactItem>
                <artifactItem>
                  <groupId>org.apache.derby</groupId>
                  <artifactId>derby</artifactId>
                  <version>${derby.version}</version>
                  <type>jar</type>
                  <overWrite>false</overWrite>
                  <outputDirectory>${project.build.directory}/drivers</outputDirectory>
                  <destFileName>derby-${derby.version}.jar</destFileName>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
          <childDelegation>true</childDelegation>
          <reuseForks>false</reuseForks>
          <forkCount>1</forkCount>
          <testNGArtifactName>none:none</testNGArtifactName>
          <argLine>
            ${jacocoArgLine}
            -javaagent:${project.basedir}/target/openejb-javaagent-${project.version}.jar
            -Dopenejb.classloader.forced-skip=org.apache.openejb.jee.,org.apache.openejb.api.
            -Dopenejb.classloader.forced-load=org.apache.openejb
            -enableassertions
            -Dopenejb.descriptors.output.folder=./dump/
            -Dorg.apache.activemq.SERIALIZABLE_PACKAGES=org,java
          </argLine>
          <workingDirectory>${project.basedir}/target</workingDirectory>
          <systemPropertyVariables>
            <openejb.home>${project.basedir}/target/test-classes</openejb.home>
          </systemPropertyVariables>
          <excludes>
            <exclude>**/TestHandler.java</exclude>
            <exclude>org/apache/openejb/cdi/**</exclude>
          </excludes>
          <!--
                    <properties>
                      <property>
                        <name>listener</name>
                        <value>org.apache.openejb.tool.junit.OpenEJBJUnitDebugListener</value>
                      </property>
                    </properties>
          -->
        </configuration>
        <executions>
          <execution>
            <id>test-testng</id>
            <phase>test</phase>
            <goals>
              <goal>test</goal>
            </goals>
            <configuration>
              <junitArtifactName>none:none</junitArtifactName>
              <excludes>
                <exclude>**</exclude>
              </excludes>
              <includes>
                <include>org/apache/openejb/cdi/**</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>process-classes</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <tstamp>
                  <format property="TSTAMP" pattern="hh:mm" />
                </tstamp>
                <replace file="target/classes/openejb-version.properties" token="@DATE-REPLACED-BY-MAVEN@" value="${DSTAMP}" />
                <replace file="target/classes/openejb-version.properties" token="@TIME-REPLACED-BY-MAVEN@" value="${TSTAMP}" />
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive combine.children="append">
            <manifest>
              <mainClass>org.apache.openejb.cli.Bootstrap</mainClass>
              <!--<addClasspath>true</addClasspath>-->
            </manifest>
            <manifestEntries>
              <Automatic-Module-Name>${tomee.build.name}</Automatic-Module-Name>
              <Class-Path>openejb-loader-${project.version}.jar openejb-client-${project.version}.jar
                xbean-finder-shaded-${xbeanVersion}.jar xbean-asm7-shaded-${xbeanVersion}.jar
              </Class-Path>
              <J2EE-DeploymentFactory-Implementation-Class>
                org.apache.openejb.config.VmDeploymentFactory
              </J2EE-DeploymentFactory-Implementation-Class>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>mbean-annotation-api</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-jpa-integration</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>javaee-api</artifactId>
    </dependency>

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${log4j2.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <artifactId>commons-lang3</artifactId>
      <groupId>org.apache.commons</groupId>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-api</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-loader</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-javaagent</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-jee</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-jee-accessors</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-itests-app</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.openejb.itests</groupId>
      <artifactId>failover-ejb</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-itests-beans</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-itests-interceptor-beans</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>openejb-itests-client</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
    </dependency>

    <dependency> <!-- Added in for backwards compatibility with the move to Jakarta EE coordinates -->
        <groupId>com.sun.activation</groupId>
        <artifactId>jakarta.activation</artifactId>
        <version>1.2.1</version>
     </dependency>

    <!-- ActiveMQ -->
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-ra</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-broker</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-jdbc-store</artifactId>
      <exclusions>
        <exclusion>
          <artifactId>activemq-broker</artifactId>
          <groupId>org.apache.activemq</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.components</groupId>
      <artifactId>geronimo-connector</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.components</groupId>
      <artifactId>geronimo-transaction</artifactId>
    </dependency>
    <dependency>
      <groupId>org.objectweb.howl</groupId>
      <artifactId>howl</artifactId>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-activation_1.1_spec</artifactId>
      <version>${geronimo-activation_1.1_spec.version}</version>
      <scope>provided</scope>
    </dependency>
    <!-- JavaMail -->
    <dependency>
      <groupId>org.apache.geronimo.javamail</groupId>
      <artifactId>geronimo-javamail_1.6_mail</artifactId>
    </dependency>
    <!-- End: JavaMail -->
    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-asm7-shaded</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-finder-shaded</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-reflect</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-naming</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-bundleutils</artifactId>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.hsqldb</groupId>
      <artifactId>hsqldb</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-dbcp2</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-pool2</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
    </dependency>
    <dependency>
      <groupId>org.codehaus.swizzle</groupId>
      <artifactId>swizzle-stream</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
    </dependency>
    <!-- webservices  -->
    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.apache.openejb.shade</groupId>
      <artifactId>quartz-openejb-shade</artifactId>
    </dependency>
    <!-- Dependency of Quartz -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-jdk14</artifactId>
    </dependency>
    <!-- Dependency of Quartz -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>xmlunit</groupId>
      <artifactId>xmlunit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>xml-apis</groupId>
      <artifactId>xml-apis</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.codehaus.swizzle</groupId>
      <artifactId>swizzle-confluence</artifactId>
      <version>1.1</version>
      <type>jar</type>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.openwebbeans</groupId>
      <artifactId>openwebbeans-impl</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.openwebbeans</groupId>
      <artifactId>openwebbeans-spi</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.openwebbeans</groupId>
      <artifactId>openwebbeans-ejb</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.apache.geronimo.specs</groupId>
          <artifactId>geronimo-ejb_3.1_spec</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.openwebbeans</groupId>
      <artifactId>openwebbeans-ee</artifactId>
    </dependency>
    <dependency>
      <artifactId>openwebbeans-ee-common</artifactId>
      <groupId>org.apache.openwebbeans</groupId>
    </dependency>
    <dependency>
      <groupId>org.apache.openwebbeans</groupId>
      <artifactId>openwebbeans-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.openjpa</groupId>
      <artifactId>openjpa</artifactId>
    </dependency>
    <!--
    <dependency>
      <groupId>stax</groupId>
      <artifactId>stax-api</artifactId>
    </dependency>
    -->
    <dependency>
      <groupId>org.apache.bval</groupId>
      <artifactId>bval-jsr</artifactId>
    </dependency>

    <dependency> <!-- licence apache, only 110ko -->
      <groupId>org.fusesource.jansi</groupId>
      <artifactId>jansi</artifactId>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.batchee</groupId>
      <artifactId>batchee-jbatch</artifactId>
      <version>${batchee.version}</version>
      <scope>provided</scope>
    </dependency>

  </dependencies>

  <profiles>
    <profile>
      <id>openejb.debug</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
              <!--<reuseForks>false</reuseForks>-->
              <argLine>"-javaagent:${project.basedir}/target/openejb-javaagent-${project.version}.jar" -Xdebug
                -Xnoagent -Djava.compiler=NONE
                -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
                -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m
              </argLine>
              <runOrder>alphabetical</runOrder>
              <!-- make local/buildbot runs deterministic and the same -->
              <workingDirectory>${project.basedir}/target</workingDirectory>
              <systemPropertyVariables>
                <openejb.home>${project.basedir}/target/test-classes</openejb.home>
              </systemPropertyVariables>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>coverage</id>
      <properties>
        <jacocoArgLine>@{argLine}</jacocoArgLine>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

