<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Package Description information to be picked up by www.eclipse.org/packages -->
  <!-- PackageName is the title of your package
       maintainer is the project or persons that are maintaining the package
       iconurl is the fully qualified URL to the icon you wish to use on the site (48x48)
       bugzillaComponentID is used to gather bugzilla information about your package.  This should be given to you after provisioning of the package is finished
       testPlan is the fully qualified URL to the test plan for this package
   -->
  <packageMetaData
   packageName="Eclipse for Scout Developers"
   maintainer="Eclipse Scout Project"
   iconurl="http://www.eclipse.org/downloads/images/scout.jpg"
   bugzillaComponentId="scout-package"
   testPlan="http://www.eclipse.org/epp/testplan.php" >
    <!-- Description is wrapped in CDATA tags to allow you to insert HTML code if necessary -->
     <description><![CDATA[<a href="http://www.eclipse.org/scout">Eclipse Scout</a> is a Java/HTML5 framework to develop business applications that run on the desktop, on tablets and mobile devices. This package includes Eclipse IDE support for Scout developers and source code.]]></description>
    <!-- packageTesters is a list of the people that are testing the package -->
     <packageTesters>
      <tester>Matthias Zimmermann</tester>
      <tester>Judith Gull</tester>
      <tester>Patrick Bänziger</tester>
      <tester>Arthur van Dorp</tester>
    </packageTesters>
  </packageMetaData>
  <MoreInfo>
  <NewAndNoteworthy
    url="https://wiki.eclipse.org/Scout/NewAndNoteworthy/6.0"
    project="Eclipse Scout" />
  <NewAndNoteworthy
    url="https://www.eclipse.org/eclipse/news/4.7/"
    project="Eclipse Platform" />
  </MoreInfo>


  <!-- version, the RCP version to build. This is used to determine the file
    name of the root file archives -->
  <rcp version="4.7.0" />

  <!-- name, the name of the product, used in naming the created files. -->
  <product name="eclipse-scout-oxygen-R" />

</configuration>
