<?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.2.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>

  <!-- Special inheritance note
       even though the <scm> element that follows is exactly the 
       same as those in super poms, it cannot be inherited because 
       there is some special code that incorrectly computes the 
       connection elements from the chain of parent poms, if this is omitted. 
       
       Keeping this a bit factored allows cutting/pasting the <scm>
       element, and just changing the following two properties -->  
  <scm>
    <connection>
      scm:git:https://github.com/apache/uima-uimaj/
    </connection>
    <developerConnection>
      scm:git:https://github.com/apache/uima-uimaj/
    </developerConnection>
    <url>
      https://github.com/apache/uima-uimaj/
    </url>
    <tag>uimaj-3.2.0</tag>
  </scm>
  
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>
  
  <!-- 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>

    <!-- dropping the soap component 2/2008 because
         it requires axis jars to be in the plugin
         and those are not distributed by us

         Users who want this functionality will need to
         build their own version of the runtime plugin
      -->
    <!--dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-adapter-soap</artifactId>
      <version>${uimaj-release-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>
    <!-- don't use artifactId as first part of finalName, follow instead the eclipse convention -->  
    <finalName>org.apache.uima.runtime_${parsedVersion.osgiVersion}</finalName>
    <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>
    
                <!-- excluded packages:
                   org.apache.uima.adapter.soap,
                   org.apache.uima.adapter.soap.axis11,
                 -->
                <Import-Package>org.slf4j*,
                   !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>
