<?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.
-->
<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>
  <artifactId>ruta-ep-engine</artifactId>
  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>ruta-parent</artifactId>
    <version>2.8.2-SNAPSHOT</version>
    <relativePath>../ruta-parent/pom.xml</relativePath>
  </parent>

  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
  <url>${uimaWebsiteUrl}</url>
  <description>Provides the UIMA Ruta engine to other Eclipse 
    plugins for their use</description>

  <properties>
    <postNoticeText>${uniWueNoticeText}

      This product contains htmlparser libraries (http://htmlparser.sourceforge.net/),
      licensed under the Common Public License.
    </postNoticeText>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>

  <scm>
    <connection>scm:git:git://github.com/apache/uima-ruta</connection>
    <developerConnection>scm:git:git@github.com:apache/uima-ruta.git</developerConnection>
    <url>https://github.com/apache/uima-ruta</url>
    <tag>HEAD</tag>
  </scm>

  <dependencies>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-core</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-typesystem</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-basic-type</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>ruta-core-ext</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>antlr-runtime</artifactId>
      <version>3.5.2</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>
          <groupId>org.antlr</groupId>
          <artifactId>stringtemplate</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.htmlparser</groupId>
      <artifactId>htmlparser</artifactId>
      <version>1.6</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-text</artifactId>
      <version>1.6</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.6</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimafit-core</artifactId>
      <version>${uimafit-version}</version>
      <scope>compile</scope>
      <!-- Exclude aop stuff, which is not need by uimafit
        and only introduces a non-asl license -->
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
        </exclusion>
        <exclusion>
          <groupId>aopalliance</groupId>
          <artifactId>aopalliance</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-math3</artifactId>
      <version>3.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging-api</artifactId>
      <version>1.1</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
      <!-- Exclude aop stuff, which is not need by uimafit
        and only introduces a non-asl license -->
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
        </exclusion>
        <exclusion>
          <groupId>aopalliance</groupId>
          <artifactId>aopalliance</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-asm</artifactId>
      <version>3.1.2.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    
    <dependency>
      <groupId>com.github.ben-manes.caffeine</groupId>
      <artifactId>caffeine</artifactId>
      <version>2.8.3</version>
    </dependency>
    
  </dependencies>

  <build>
    <!-- don't use artifactId as first part of finalName, follow instead
      the eclipse convention -->
    <finalName>org.apache.uima.ruta.engine_${parsedVersion.osgiVersion}</finalName>
    <resources>
      <resource>
        <directory>src/main/readme_src</directory>
      </resource>
    </resources>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <executions>
            <execution>
              <id>default-cli</id>
              <configuration>
                <excludes>
                  <exclude>release.properties</exclude> <!-- release generated artifact -->
                  <exclude>marker-file-identifying-*</exclude>
                  <exclude>META-INF/MANIFEST.MF</exclude>
                  <exclude>issuesFixed/**</exclude>
                </excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <executions>
          <execution>
            <id>uima-bundle</id>
            <configuration>
              <instructions>
                <_nouses>true</_nouses>
                <_exportcontents>org.apache.uima.ruta,
                  org.apache.uima.ruta.cache,
                  org.apache.uima.ruta.action,
                  org.apache.uima.ruta.condition,
                  org.apache.uima.ruta.constraint,
                  org.apache.uima.ruta.descriptor,
                  org.apache.uima.ruta.engine,
                  org.apache.uima.ruta.expression,
                  org.apache.uima.ruta.expression.annotation,
                  org.apache.uima.ruta.expression.bool,
                  org.apache.uima.ruta.expression.feature,
                  org.apache.uima.ruta.expression.list,
                  org.apache.uima.ruta.expression.number,
                  org.apache.uima.ruta.expression.resource,
                  org.apache.uima.ruta.expression.string,
                  org.apache.uima.ruta.expression.type,
                  org.apache.uima.ruta.extensions,
                  org.apache.uima.ruta.parser,
                  org.apache.uima.ruta.resource,
                  org.apache.uima.ruta.rule,
                  org.apache.uima.ruta.rule.quantifier,
                  org.apache.uima.ruta.seed,
                  org.apache.uima.ruta.type,
                  org.apache.uima.ruta.utils,
                  org.apache.uima.ruta.verbalize,
                  org.apache.uima.ruta.visitor,
                  org.apache.uima.ruta.block.fst,
                  org.apache.uima.ruta.block,
                  org.apache.uima.ruta.string.*,
                  org.antlr.runtime,
                  org.antlr.runtime.debug,
                  org.antlr.runtime.misc,
                  org.antlr.runtime.tree,
                  org.htmlparser,
                  org.htmlparser.*,
                  org.apache.commons.text.*,
                  org.apache.commons.lang3.*,
                  org.apache.commons.logging,
                  org.apache.commons.io.*,
                  org.apache.uima.fit.*,
                  org.apache.commons.math3.*,
                  org.springframework.*
                </_exportcontents>

                <Import-Package>
                  <!-- -->
                  org.apache.uima.*,
                  !bsh, !com.sun.net.httpserver,
                  !edu.emory.mathcs.backport.java.util.concurrent,
                  !groovy.lang, !javax.annotation,
                  !javax.ejb,
                  !javax.el, !javax.inject,
                  !javax.interceptor, !javax.jms,
                  !javax.management, !javax.management.modelmbean, !javax.management.openmbean,
                  !javax.management.remote,
                  !javax.naming, !javax.persistence.spi, !javax.rmi,
                  !javax.servlet,
                  !javax.swing, !javax.swing.border,
                  !javax.swing.event,
                  !javax.swing.text, !javax.swing.tree, !javax.validation,
                  !javax.validation.bootstrap,
                  !javax.validation.metadata, !javax.xml.namespace,
                  !javax.xml.parsers, !javax.xml.stream,
                  !javax.xml.stream.events,
                  !javax.xml.stream.util,
                  !javax.xml.transform, !javax.xml.transform.sax,
                  !javax.xml.transform.stax,
                  !javax.xml.ws, !javax.xml.*, !joptsimple,
                  !net.sf.cglib.*, !net.sf.ehcache.*,
                  !org.antlr.stringtemplate,
                  !org.apache.avalon.framework.logger,
                  !org.apache.log, !org.apache.log4j,
                  !org.apache.log4j.xml,
                  !org.aspectj.*, !org.codehaus.groovy.*, !org.hibernate.* ,
                  !org.joda.*, !org.jruby.*, !org.omg.CORBA,
                  !org.springframework.instrument,
                  !org.w3c.dom, !org.xml.sax, !org.xml.sax.ext, !org.xml.sax.helpers,
                  !org.aopalliance.*, !org.springframework.aop.*
                </Import-Package>
                <!-- -->
                <Require-Bundle> org.apache.uima.runtime </Require-Bundle>
                <!-- <Import-Package>org.apache.uima, org.apache.uima.analysis_component,
                  org.apache.uima.analysis_engine, org.apache.uima.analysis_engine.annotator,
                  org.apache.uima.analysis_engine.asb, org.apache.uima.analysis_engine.asb.impl,
                  org.apache.uima.analysis_engine.impl, org.apache.uima.analysis_engine.impl.compatibility,
                  org.apache.uima.analysis_engine.metadata, org.apache.uima.analysis_engine.metadata.impl,
                  org.apache.uima.analysis_engine.service.impl, org.apache.uima.cas, org.apache.uima.cas.admin,
                  org.apache.uima.cas.impl, org.apache.uima.cas.text, org.apache.uima.cas_data,
                  org.apache.uima.cas_data.impl, org.apache.uima.flow, org.apache.uima.flow.impl,
                  org.apache.uima.impl, org.apache.uima.internal.util, org.apache.uima.internal.util.rb_trees,
                  org.apache.uima.internal.util.text, org.apache.uima.jcas, org.apache.uima.jcas.cas,
                  org.apache.uima.jcas.impl, org.apache.uima.jcas.tcas, org.apache.uima.resource,
                  org.apache.uima.resource.impl, org.apache.uima.resource.metadata, org.apache.uima.resource.metadata.impl,
                  org.apache.uima.resource.service.impl, org.apache.uima.search, org.apache.uima.search.impl,
                  org.apache.uima.uimacpp, org.apache.uima.util, org.apache.uima.util.impl,
                  </Import-Package> -->
                <Embed-Dependency>*;scope=compile</Embed-Dependency>
                <!-- <Embed-Transitive>true</Embed-Transitive> -->
                <Bundle-SymbolicName>org.apache.uima.ruta.engine;singleton:=true</Bundle-SymbolicName>
                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
                <!-- <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> -->
                <Eclipse-BuddyPolicy>registered</Eclipse-BuddyPolicy>
                <Eclipse-RegisterBuddy>org.apache.uima.runtime</Eclipse-RegisterBuddy>
              </instructions>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copyDependentJars</id>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.outputDirectory}</outputDirectory>
              <excludeArtifactIds>uimaj-core,uimaj-tools,uimaj-document-annotation,uimaj-adapter-vinci,jVinci,uimaj-cpe,tools,aopalliance,spring-aop,stringtemplate,antlr</excludeArtifactIds>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>