<?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>2.4.1-SNAPSHOT</version>
    <relativePath>../uimaj-parent/pom.xml</relativePath>
  </parent>
  
  <artifactId>uimaj-ep-runtime</artifactId>
  <version>2.4.1-SNAPSHOT</version>
  <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:svn:http://svn.apache.org/repos/asf/uima/uimaj/trunk/uimaj-ep-runtime
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/uimaj/trunk/uimaj-ep-runtime
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-ep-runtime
    </url>
  </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>
    </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.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.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.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.apache.log4j;resolution:=optional,*
                </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>J2SE-1.5</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>unpackDependentJars</id>
            <goals><goal>copy-dependencies</goal></goals>
            <configuration>
              <outputDirectory>${project.build.outputDirectory}</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>      
    </plugins>
  </build>
</project>
