# Plug-in Import

PDE provides a Plug-in Import wizard to import plug-ins and fragments from the file system into the workspace. The wizard is available under File > Import... > Plug-in Development > Plug-ins from the top level menu.

## Import Location

By default, the location to import plug-ins from is the target platform as specified on the Window > Preferences... > Plug-in Development > Target Platform preference page.

The Target Platform... button is a shortcut that opens the Target Platform preference page for inspection or modification.

If you choose to import plug-ins from an arbitrary location on the file system and you do not wish to change the location of the target platform in the preferences, uncheck The Target Platform (as specified in the Preferences) checkbox. Then, use the Browse... button to navigate and enter the directory of choice.

## JAR Source Attachments

When importing a plug-in, PDE searches for the plug-in source code in order to either attach it to the binary JAR or unzip it - depending on the type of import. Ideally, the source code is contained within the plug-in itself. If the source code is packaged in separate source plug-ins, as detailed on the Source Code Locations preference page, PDE searches these locations for plug-in source code to import.

The Source Code Locations... button opens the Target Platform preference page to allow you to inspect or augment the current list of source code locations.

## Path Variables

It is permissible to utilize environment variables within library paths on the classpath (e.g. $ws$/swt.jar). These variables are resolved by PDE as specified on the Environment tab of the Window > Preferences... > Plug-in Development > Target Platform preference page.

The Environment Variables... button is a shortcut that opens the Environment preference page for inspection or modification.

## Plug-ins and Fragments to Import

The Select from all plug-ins and fragments found at the specified location option takes you to a second wizard page that lets you browse all plug-ins and choose a subset to import.

The Import plug-ins and fragments required by existing plug-ins option is useful when you are importing all pre-requisites for a plug-in that is not part of the target platform. This option takes you to a second wizard page that is simpler; but, provides less overall control over what gets imported.

## Import Format

When plug-ins are imported, a project is created in the workspace for each plug-in. The project has the same name as the ID of the plug-in being imported.

As for the content of each project, it varies by import format:

1. Binary projects: The plug-in content is copied into the project. The binary code remains intact in a JAR; while, the manifest files and other resources are extracted to the project root. The advantage of binary projects is that they allow you to browse the code without the overhead of compiling the source code.
2. Binary projects with linked content: The plug-in content is not copied into the project. Instead, links are created in the project to map to the actual physical location of the JARs, files and folders on disk. The advantage of this type of import over a regular binary import is that it is faster to import; since, the operation only involves creating links. The disadvantage of this approach is that linked binary projects can become out of sync and have to be re-imported if the absolute path to these linked files are changed in the file system.
3. Projects with source folders: The source code for the plug-ins being imported gets extracted and placed in source folders. The advantage of this type of import is that you will be able to modify the imported source code. The disadvantage of this approach is that the code gets compiled and results in an overhead whose magnitude is proportional to the number and size of plug-ins imported.