<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.uima</groupId>
    <artifactId>uimaj-parent</artifactId>
    <version>3.4.0</version>
    <relativePath>../uimaj-parent/pom.xml</relativePath>
  </parent>

  <artifactId>uimaj-ep-runtime</artifactId>
  <packaging>jar</packaging>  <!-- can't be bundle because it doesn't handle property substitution -->
  <name>Apache UIMA Eclipse: ${project.artifactId}</name>
  <description>Provides the core UIMA Framework to other Eclipse 
    plugins for their use</description>
  <url>${uimaWebsiteUrl}</url>

  <!-- These dependencies should just be all the jars that
       need to be included in the library plugin -->
  <dependencies>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-core</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
      <!-- exclude log4j -->
      <exclusions>
        <exclusion>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-slf4j-impl</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-cpe</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-tools</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-adapter-vinci</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>jVinci</artifactId>
      <version>${project.parent.version}</version>
      <scope>compile</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <executions>
          <execution>
            <id>uima-bundle</id>
            <configuration>
              <instructions>
                <!-- turn off "uses" generation because Eclipse 3.2.x doesn't work with them -->
                <_nouses>true</_nouses>
                <!-- export contents because we don't want the actual
                     java code included (although we could... as an
                     alternative to the jars - but might have a
                     versioning / control issue -->
                <_exportcontents>
                  org.apache.uima,
                  org.apache.uima.adapter.vinci,
                  org.apache.uima.adapter.vinci.util,
                  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.function,
                  org.apache.uima.cas.impl,
                  org.apache.uima.cas.text,
                  org.apache.uima.cas_data,
                  org.apache.uima.cas_data.impl,
                  org.apache.uima.cas_data.impl.vinci,
                  org.apache.uima.collection,
                  org.apache.uima.collection.base_cpm,
                  org.apache.uima.collection.impl,
                  org.apache.uima.collection.impl.base_cpm.container,
                  org.apache.uima.collection.impl.base_cpm.container.deployer,
                  org.apache.uima.collection.impl.cpm,
                  org.apache.uima.collection.impl.cpm.container,
                  org.apache.uima.collection.impl.cpm.container.deployer,
                  org.apache.uima.collection.impl.cpm.container.deployer.socket,
                  org.apache.uima.collection.impl.cpm.container.deployer.vinci,
                  org.apache.uima.collection.impl.cpm.container.deployer.vns,
                  org.apache.uima.collection.impl.cpm.engine,
                  org.apache.uima.collection.impl.cpm.utils,
                  org.apache.uima.collection.impl.cpm.vinci,
                  org.apache.uima.collection.impl.cpm.vinci.cas_data,
                  org.apache.uima.collection.impl.metadata,
                  org.apache.uima.collection.impl.metadata.cpe,
                  org.apache.uima.collection.metadata,
                  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.jcas,
                  org.apache.uima.jcas.cas,
                  org.apache.uima.jcas.impl,
                  org.apache.uima.jcas.tcas,
                  org.apache.uima.pear.tools,
                  org.apache.uima.pear.util,
                  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.tools,
                  org.apache.uima.tools.annot_view,
                  org.apache.uima.tools.cpm,
                  org.apache.uima.tools.cvd,
                  org.apache.uima.tools.cvd.control,
                  org.apache.uima.tools.cvd.tsview,
                  org.apache.uima.tools.docanalyzer,
                  org.apache.uima.tools.images,
                  org.apache.uima.tools.jcasgen,
                  org.apache.uima.tools.pear.install,
                  org.apache.uima.tools.pear.merger,
                  org.apache.uima.tools.stylemap,
                  org.apache.uima.tools.util.gui,
                  org.apache.uima.tools.util.htmlview,
                  org.apache.uima.tools.viewer,
                  org.apache.uima.uimacpp,
                  org.apache.uima.util,
                  org.apache.uima.util.impl,
                  org.apache.vinci.debug,
                  org.apache.vinci.transport,
                  org.apache.vinci.transport.context,
                  org.apache.vinci.transport.document,
                  org.apache.vinci.transport.util,
                  org.apache.vinci.transport.vns,
                  org.apache.vinci.transport.vns.client,
                  org.apache.vinci.transport.vns.service
                </_exportcontents>
    
                <Import-Package>
                  !org.slf4j.impl,
                  org.slf4j.*,
                  com.apple.eio;resolution:=optional,
                  !com.strobel.assembler,
                  !com.strobel.assembler.metadata,
                  !com.strobel.decompiler,
                  !javax.annotation.meta,
                  !org.apache.logging.slf4j*,
                  !org.apache.logging.log4j*,
                  *
                </Import-Package>
                <!-- causes the other Jars from the maven
                     dependencies, at the proper version, to be
                     included in this, and also sets up the bundle
                     classpath to include them -->
                <Embed-Dependency>*;scope=compile</Embed-Dependency>
    
                <!-- These just get made into the corresponding manifest entries -->
                <Bundle-SymbolicName>org.apache.uima.runtime;singleton:=true</Bundle-SymbolicName>
                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
                <Eclipse-BuddyPolicy>registered</Eclipse-BuddyPolicy>
              </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>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
