<?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.5.0-SNAPSHOT</version>
    <relativePath>../ruta-parent/pom.xml</relativePath>
  </parent>
  <properties>
    <postNoticeText>${uniWueNoticeText}

This product contains htmlparser libraries (http://htmlparser.sourceforge.net/), 
licensed under the Common Public License.
    </postNoticeText>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>
  <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>
  <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-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-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>
  </dependencies>
  <scm>
    <url>http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-engine</url>
    <connection>scm:svn:http://svn.apache.org/repos/asf/uima/ruta/trunk/ruta-ep-engine</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/uima/ruta/trunk/ruta-ep-engine</developerConnection>
  </scm>
  <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>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.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.bool,
                  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.lang3.*,
                  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, !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.7</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>