# Plug-in Dependencies

The Dependencies page shows the dependencies that your plug-in has on other plug-ins. On this page, you must list all plug-ins that contribute code to your plug-in project and that are required to be on your project's classpath in order to compile. When you modify the list of dependencies and save the file, PDE will automatically update your classpath.

## Required Plug-ins

The Required Plug-ins section specifies your plug-in project's dependencies on other plug-ins by explicitly enumerating these plug-ins. Your plug-in will not resolve or run at runtime if any of your plug-in dependencies are missing or unresolved.

Press the Add... button to browse the list of all plug-ins that your plug-in may make a dependency on.

The order of the plug-ins in the list is important because it dictates the class loading order at runtime; therefore, use the Up and Down buttons to organize the list as appropriate.

You can set several properties on each plug-in dependency by selecting a plug-in and clicking the Properties button:

- You can make a plug-in dependency optional by selecting the Optional option. When this option is enabled, it indicates to the runtime that your plug-in should run even if an optional plug-in dependency is missing or not resolved.
- You can select the Re-export this dependency option to re-export your dependency in order to make it automatically visible to any downstream plug-in that require it. Please note that you should only re-export a given plug-in dependency only if your plug-in exposes one ore more API's from that dependency.
- You can also specify the Minimum Version and Maximum Version of the plug-in dependency.

## Imported Packages

The Eclipse runtime provides the flexibility of specifying a dependency on a package without explicitly identifying its originating plug-in. These packages are enumerated in the Imported Packages section.

Press the Add... button to browse the list of packages available to your plug-in for importing. PDE filters out packages contributed by plug-ins that are already on your plug-in classpath.

You can set several properties on each package dependency:

- You can make the dependency optional by selecting the Optional option. When this option is enabled, this indicates to the runtime that your plug-in should run even if a package dependency is missing.
- You can specify the Minimum Version and Maximum Version of the package you require.

## Automated Management of Dependencies

The Automated Management of Dependencies section provides a new flexible workflow. This workflow allows you to code your plug-in first and then have PDE analyze your code and automatically generate the list of plug-in dependencies.

Press the Add... button to add plug-ins to the list. Consequently, this action will augment your development build path and your content assist scope accordingly.

These dependencies do not get added to the MANIFEST.MF file immediately; however, you can start coding right away as if they were.

At any time, you can click the add dependencies hyperlink to have PDE analyze your code and generate the correct dependencies in your MANIFEST.MF file via either the Require-Bundle or Import-Package headers.

## Dependency Analysis

The Dependency Analysis section contains several useful features that help you examine and optimize your plug-in dependencies to make your plug-in run better.

Since JARs from all the plug-ins listed as dependencies will be on your plug-in runtime classpath, it is very important not to list dependencies that are not required. Otherwise, class loading performance will be detrimentally affected. If you click the Find unused dependencies hyperlink, PDE will find unused and redundant entries in the list of required plug-ins and imported packages and offer to remove them.