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

<features>
    <feature name="opennlp-tagging-server" version="0.0.1.SNAPSHOT">
    	<bundle>http://repo1.maven.org/maven2/org/apache/opennlp/opennlp-maxent/3.0.2-incubating/opennlp-maxent-3.0.2-incubating.jar</bundle>
    	<bundle>http://repo1.maven.org/maven2/org/apache/opennlp/opennlp-tools/1.5.2-incubating/opennlp-tools-1.5.2-incubating.jar</bundle>
        <bundle>http://repo1.maven.org/maven2/org/ops4j/pax/web/pax-web-jetty-bundle/0.7.1/pax-web-jetty-bundle-0.7.1.jar</bundle>
        <bundle>http://repo2.maven.org/maven2/org/ops4j/pax/web/pax-web-extender-war/0.7.1/pax-web-extender-war-0.7.1.jar</bundle>
        <bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-core&amp;v=1.12&amp;e=jar</bundle>
        <bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-server&amp;v=1.12&amp;e=jar</bundle>
        <bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-servlet&amp;v=1.12&amp;e=jar</bundle>
        <bundle>https://maven.java.net/service/local/artifact/maven/redirect?r=releases&amp;g=com.sun.jersey&amp;a=jersey-json&amp;v=1.12&amp;e=jar</bundle>
        <bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-core-asl/1.9.2/jackson-core-asl-1.9.2.jar</bundle>
        <bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-jaxrs/1.9.2/jackson-jaxrs-1.9.2.jar</bundle>
        <bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-xc/1.9.2/jackson-xc-1.9.2.jar</bundle>
        <bundle>http://repo1.maven.org/maven2/org/codehaus/jackson/jackson-mapper-asl/1.9.2/jackson-mapper-asl-1.9.2.jar</bundle>
        <bundle>http://repo1.maven.org/maven2/org/codehaus/jettison/jettison/1.3.1/jettison-1.3.1.jar</bundle>
        <bundle>mvn:org.apache.opennlp/tagging-server/0.0.1-SNAPSHOT</bundle>
    </feature>
</features>