<?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.    
-->
<feature
      id="org.apache.ivyde.feature"
      label="%featureName"
      version="2.2.0.qualifier"
      provider-name="%providerName"
      plugin="org.apache.ivyde.eclipse">

   <description url="http://ant.apache.org/ivy/ivyde/">
      %description
   </description>

   <copyright>
      Copyright © 2013 The Apache Software Foundation
   </copyright>

   <license url="http://www.apache.org/licenses/LICENSE-2.0">
      %license
   </license>

   <url>
      <update label="%updateSiteName" url="http://www.apache.org/dist/ant/ivyde/updatesite"/>
      <discovery label="%updateSiteName" url="http://www.apache.org/dist/ant/ivyde/updatesite"/>
   </url>

   <requires>
      <import plugin="org.eclipse.ui" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.core.runtime" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.jface.text" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.ui.editors" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.ui.workbench.texteditor" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.core.resources" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.ui.ide" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.ui.forms" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.search" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.jdt.core" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.jdt.ui" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.ui.console" version="3.4.0" match="compatible"/>
      <import plugin="org.apache.ivy" version="2.1.0" match="compatible"/>
      <import plugin="org.eclipse.help" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.debug.core" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.jdt.launching" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.debug.ui" version="3.4.0" match="compatible"/>
      <import plugin="org.eclipse.core.variables" version="3.2.0" match="compatible"/>
   </requires>

   <plugin
         id="org.apache.ivyde.eclipse"
         download-size="0"
         install-size="0"
         version="0.0.0"/>

</feature>
