# Package org.apache.nutch.plugin

package org.apache.nutch.plugin
The Nutch `Plugin` System.

The Nutch Plugin System provides a way to extend nutch functionality. A large part of the functionality of Nutch are provided by plugins: All of the parsing, indexing and searching that nutch does is actually accomplished by various plugins.

In writing a plugin, you're actually providing one or more extensions of the existing extension-points (hooks). The core Nutch extension-points are themselves defined in a plugin, the `nutch-extensionpoints` plugin. Each extension-point defines an interface that must be implemented by the extension. The core extension-points and extensions available in Nutch are listed in the `Pluggable` interface.

See Also:
  - Nutch plugin manifest DTD
  - Plugin Central
  - About Plugins
  - Why Nutch has a Plugin System?
  - Which technical concepts are behind the nutch plugin system?
  - What's the problem with Plugins and Class loading?
  - Writing Plugin Example

- Class
  Description
  CircularDependencyException
  `CircularDependencyException` will be thrown if a circular dependency is detected.
  Extension
  An `Extension` is a kind of listener descriptor that will be installed on a concrete `ExtensionPoint` that acts as kind of Publisher.
  ExtensionPoint
  The `ExtensionPoint` provide meta information of a extension point.
  MissingDependencyException
  `MissingDependencyException` will be thrown if a plugin dependency cannot be found.
  Pluggable
  Defines the capability of a class to be plugged into Nutch.
  Plugin
  A nutch-plugin is an container for a set of custom logic that provide extensions to the nutch core functionality or another plugin that provides an API for extending.
  PluginClassLoader
  The `PluginClassLoader` is a child-first classloader that only contains classes of the runtime libraries setuped in the plugin manifest file and exported libraries of plugins that are required plugins.
  PluginDescriptor
  The `PluginDescriptor` provide access to all meta information of a nutch-plugin, as well to the internationalizable resources and the plugin own classloader.
  PluginManifestParser
  The `PluginManifestParser` provides a mechanism for parsing Nutch plugin manifest files (`plugin.xml`) contained in a `String` of plugin directories.
  PluginRepository
  The plugin repository is a registry of all plugins.
  PluginRuntimeException
  `PluginRuntimeException` will be thrown until a exception in the plugin managemnt occurs.
  URLStreamHandlerFactory
  This URLStreamHandlerFactory knows about all the plugins in use and thus can create the correct URLStreamHandler even if it comes from a plugin classpath.