A feature is a way of grouping and describing plug-ins that comprise a product. Grouping plug-ins into features allows the product to be installed and updated in a way that coexists with other Eclipse based products. The platform itself is partitioned into three major features:
There are other minor features, such as examples and OS-dependent portions of the platform.
Note: The platform installation and update framework allows you to build your own custom implementations of the concepts discussed here. That is, you can define your own types of features, (their packaging formats, install procedures, etc.), as well as your own types of server sites for updating your features. The remainder of this discussion is focused on the platform default implementations for features and update sites.
Features do not contain any code. They merely describe a set of plug-ins that provide the function for the feature and information about how to update it. Features are packaged in a feature archive file and described using a feature manifest file, feature.xml. The following is the manifest for the platform feature:
<?xml version="1.0" encoding="UTF-8" ?> <feature id="org.eclipse.platform" label="%featureName" version="2.0.0" image="eclipse_update_120.jpg" provider-name="%providerName" primary="true" application="org.eclipse.ui.workbench"> <description>%description</description> <license url="%licenseURL">%license</license> <url> <update url="http://update.eclipse.org/updates" label="%updateSiteName" /> </url> <plugin id="org.apache.ant" version="1.4.1" /> <plugin id="org.apache.lucene" version="1.2.0" /> <plugin id="org.apache.xerces" version="4.0.3" /> <plugin id="org.eclipse.ant.core" version="2.0.0" /> <plugin id="org.eclipse.compare" version="2.0.0" /> <plugin id="org.eclipse.core.boot" version="2.0.0" /> <plugin id="org.eclipse.core.resources" version="2.0.0" /> <plugin id="org.eclipse.core.runtime" version="2.0.0" /> <plugin id="org.eclipse.debug.core" version="2.0.0" /> <plugin id="org.eclipse.debug.ui" version="2.0.0" /> <plugin id="org.eclipse.help" version="2.0.0" /> <plugin id="org.eclipse.help.webapp" version="2.0.0" /> <plugin id="org.eclipse.help.ui" version="2.0.0" /> <plugin id="org.eclipse.platform" version="2.0.0" /> <plugin id="org.eclipse.platform.doc.user" version="2.0.0" /> <plugin id="org.eclipse.search" version="2.0.0" /> <plugin id="org.eclipse.swt" version="2.0.0" /> <plugin id="org.eclipse.team.core" version="2.0.0" /> <plugin id="org.eclipse.team.cvs.core" version="2.0.0" /> <plugin id="org.eclipse.team.cvs.ssh" version="2.0.0" /> <plugin id="org.eclipse.team.cvs.ui" version="2.0.0" /> <plugin id="org.eclipse.team.ui" version="2.0.0" /> <plugin id="org.eclipse.tomcat" version="4.0.3" /> <plugin id="org.eclipse.ui" version="2.0.0" /> <plugin id="org.eclipse.ui.externaltools" version="2.0.0" /> <plugin id="org.eclipse.update.core" version="2.0.0" /> <plugin id="org.eclipse.update.ui" version="2.0.0" /> <plugin id="org.eclipse.update.ui.forms" version="2.0.0" /> </feature>