<!-- 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. -->
<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>

  <groupId>org.superbiz</groupId>
  <artifactId>deltaspike-fullstack</artifactId>
  <name>OpenEJB :: Examples :: JSF2/CDI/BV/JPA/DeltaSpike</name>
  <version>7.0.6-SNAPSHOT</version>

  <packaging>war</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <version.myfaces2>2.2.7</version.myfaces2>
    <version.deltaspike>1.3.0</version.deltaspike>
    <version.extval>2.0.8</version.extval>
    <tomee.version>7.0.6</tomee.version>
    <openjpa.version>2.4.3</openjpa.version>
  </properties>

  <build>
    <defaultGoal>install</defaultGoal>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.1.0</version>
      </plugin>
      <plugin>
        <groupId>org.apache.openjpa</groupId>
        <artifactId>openjpa-maven-plugin</artifactId>
        <version>${openjpa.version}</version>
        <configuration>
          <includes>org/superbiz/deltaspike/domain/*.class</includes>
        </configuration>
        <executions>
          <execution>
            <id>enhancer</id>
            <phase>process-classes</phase>
            <goals>
              <goal>enhance</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.tomee.maven</groupId>
        <artifactId>tomee-maven-plugin</artifactId>
        <version>7.0.6-SNAPSHOT</version>
        <configuration>
          <context>ROOT</context>
          <simpleLog>true</simpleLog>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.tomee.maven</groupId>
        <artifactId>tomee-embedded-maven-plugin</artifactId>
        <version>7.0.6-SNAPSHOT</version>
        <configuration>
          <classpathAsWar>true</classpathAsWar>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.18.1</version>
        <configuration> <!-- optional -->
          <systemPropertyVariables>
            <openejb.jul.forceReload>true</openejb.jul.forceReload>
            <logging.level.OpenEJB.startup>FINEST</logging.level.OpenEJB.startup>
          </systemPropertyVariables>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>apache-m2-snapshot</id>
      <name>Apache Snapshot Repository</name>
      <url>https://repository.apache.org/content/groups/snapshots</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>prime-repo</id>
      <name>Prime Technology Maven Repository</name>
      <url>http://repository.primefaces.org/</url>
      <layout>default</layout>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>org.apache.tomee</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tomee</groupId>
      <artifactId>openejb-core</artifactId>
      <version>7.0.6-SNAPSHOT</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <artifactId>slf4j-api</artifactId>
          <groupId>org.slf4j</groupId>
        </exclusion>
        <exclusion>
          <artifactId>xbean-asm5-shaded</artifactId>
          <groupId>org.apache.xbean</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-collections</artifactId>
          <groupId>commons-collections</groupId>
        </exclusion>
        <exclusion>
          <artifactId>junit</artifactId>
          <groupId>junit</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-lang3</artifactId>
          <groupId>org.apache.commons</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.xbean</groupId>
      <artifactId>xbean-asm5-shaded</artifactId>
      <version>3.18</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <artifactId>commons-lang3</artifactId>
      <groupId>org.apache.commons</groupId>
      <version>3.3.2</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.10</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.core</groupId>
      <artifactId>deltaspike-core-api</artifactId>
      <version>${version.deltaspike}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.core</groupId>
      <artifactId>deltaspike-core-impl</artifactId>
      <version>${version.deltaspike}</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.modules</groupId>
      <artifactId>deltaspike-jsf-module-api</artifactId>
      <version>${version.deltaspike}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.modules</groupId>
      <artifactId>deltaspike-jsf-module-impl</artifactId>
      <version>${version.deltaspike}</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.modules</groupId>
      <artifactId>deltaspike-data-module-api</artifactId>
      <version>${version.deltaspike}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.modules</groupId>
      <artifactId>deltaspike-data-module-impl</artifactId>
      <version>${version.deltaspike}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.modules</groupId>
      <artifactId>deltaspike-security-module-api</artifactId>
      <version>${version.deltaspike}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.modules</groupId>
      <artifactId>deltaspike-security-module-impl</artifactId>
      <version>${version.deltaspike}</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.extensions.validator</groupId>
      <artifactId>myfaces-extval-core</artifactId>
      <version>${version.extval}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
      <artifactId>myfaces-extval-property-validation</artifactId>
      <version>${version.extval}</version>
      <exclusions>
        <exclusion>
          <groupId>javax.persistence</groupId>
          <artifactId>persistence-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
      <artifactId>myfaces-extval-bean-validation</artifactId>
      <version>${version.extval}</version>
      <exclusions>
        <exclusion>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.modules</groupId>
      <artifactId>deltaspike-test-control-module-api</artifactId>
      <version>${version.deltaspike}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.modules</groupId>
      <artifactId>deltaspike-test-control-module-impl</artifactId>
      <version>${version.deltaspike}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.cdictrl</groupId>
      <artifactId>deltaspike-cdictrl-api</artifactId>
      <version>${version.deltaspike}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.deltaspike.cdictrl</groupId>
      <artifactId>deltaspike-cdictrl-openejb</artifactId>
      <version>${version.deltaspike}</version>
      <scope>test</scope>
    </dependency>

    <!-- only needed for mocked cdi-beans -->
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
      <version>1.9.5</version>
      <scope>test</scope>
    </dependency>

    <!-- for full page-bean tests -->
    <dependency>
      <groupId>org.apache.myfaces.core</groupId>
      <artifactId>myfaces-api</artifactId>
      <version>${version.myfaces2}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.core</groupId>
      <artifactId>myfaces-impl</artifactId>
      <version>${version.myfaces2}</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <artifactId>commons-collections</artifactId>
          <groupId>commons-collections</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-logging</artifactId>
          <groupId>commons-logging</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.core</groupId>
      <artifactId>myfaces-impl-test</artifactId>
      <version>${version.myfaces2}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.myfaces.test</groupId>
      <artifactId>myfaces-test20</artifactId>
      <version>1.0.6</version>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <artifactId>junit</artifactId>
          <groupId>junit</groupId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- 3rd party libs -->
    <dependency>
      <groupId>org.primefaces</groupId>
      <artifactId>primefaces</artifactId>
      <version>2.2</version>
    </dependency>
  </dependencies>

  <!--
  This section allows you to configure where to publish libraries for sharing.
  It is not required and may be deleted.  For more information see:
  http://maven.apache.org/plugins/maven-deploy-plugin/
  -->
  <distributionManagement>
    <repository>
      <id>localhost</id>
      <url>file://${basedir}/target/repo/</url>
    </repository>
    <snapshotRepository>
      <id>localhost</id>
      <url>file://${basedir}/target/snapshot-repo/</url>
    </snapshotRepository>
  </distributionManagement>

</project>

