<?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>3.1.0</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:https://github.com/apache/uima-ruta/</connection>
    <developerConnection>scm:git:https://github.com/apache/uima-ruta/</developerConnection>
    <url>https://github.com/apache/uima-ruta/</url>
    <tag>ruta-3.1.0</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>4.3.30.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.30.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>4.3.30.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.30.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    
    <dependency>
      <groupId>com.github.ben-manes.caffeine</groupId>
      <artifactId>caffeine</artifactId>
      <version>2.8.3</version>
    </dependency>
    
    <dependency>
		  <groupId>org.slf4j</groupId>
		  <artifactId>slf4j-simple</artifactId>
		  <version>1.7.30</version>
		</dependency>
	  <dependency>
	    <groupId>org.slf4j</groupId>
	    <artifactId>slf4j-api</artifactId>
	    <version>1.7.30</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>

    <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.cache,
                  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>