You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/07/30 06:16:27 UTC

svn commit: r226471 - /maven/components/trunk/maven-site/src/site/apt/plugin-registry-overview.apt

Author: jdcasey
Date: Fri Jul 29 21:16:21 2005
New Revision: 226471

URL: http://svn.apache.org/viewcvs?rev=226471&view=rev
Log:
Adding doco on plugin registry.

Added:
    maven/components/trunk/maven-site/src/site/apt/plugin-registry-overview.apt   (with props)

Added: maven/components/trunk/maven-site/src/site/apt/plugin-registry-overview.apt
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/plugin-registry-overview.apt?rev=226471&view=auto
==============================================================================
--- maven/components/trunk/maven-site/src/site/apt/plugin-registry-overview.apt (added)
+++ maven/components/trunk/maven-site/src/site/apt/plugin-registry-overview.apt Fri Jul 29 21:16:21 2005
@@ -0,0 +1,193 @@
+  ---
+  Plugin Registry Overview
+  ---
+  John Casey
+  ---
+  29-July-2005
+  ---
+
+Plugin Registry Overview
+
+* Introduction
+
+  The Maven 2 plugin registry (~/.m2/plugin-registry.xml) is a mechanism to 
+  help the user exert some control over their build environment. Rather than
+  simply fetching the latest version of every plugin used in a given build,
+  this registry allows the user to peg a plugin to a particular version, and
+  only update to newer versions under certain restricted circumstances. There
+  are various ways to configure or bypass this feature, and the feature itself
+  can be managed on either a per-user or global level.
+
+* A Tour of plugin-registry.xml
+
+  The plugin registry file (per-user: ~/.m2/plugin-registry.xml, global: 
+  $M2_HOME/conf/plugin-registry.xml) contains a set of plugin-version
+  registrations, along with some configuration parameters for the registry
+  itself.
+
+  Currently, the plugin registry supports configuration options for the 
+  following:
+
+  * <<updateInterval>> - Determines how often (or whether) the registered
+    plugins are checked for updates.
+
+    Combined with the <<lastChecked>> plugin attribute, this determines whether
+    a particular plugin will be checked for updates during a given build. Valid
+    settings are: never, always, and interval:TTT (TTT is a short specification 
+    for a time interval, which follows the pattern /([0-9]+[wdhm])+/). Intervals 
+    are specified down to the minute resolution. An example of an interval 
+    specification might be:
+
+    <<<interval:4w2h30m>>> (check every 4 weeks, 2 hours, and 30 minutes)
+
+  * <<autoUpdate>> - Specifies whether the user should be prompted before 
+    registering plugin-version updates. This is a boolean value, accepting
+    true/false.
+
+  * <<checkLatest>> - Specifies whether the LATEST artifact metadata should
+    be consulted while determining versions for <unregistered> plugins.
+
+    LATEST metadata is always published when a plugin is installed or deployed
+    to a repository, and so will always reference the newest copy of the plugin,
+    regardless of whether this is a snapshot version or not.
+
+    <NOTE:> Registered plugins will currently only ever be updated with the 
+    results of RELEASE metadata resolution.
+
+  Obviously, the plugin registry also contains information about resolved plugin
+  versions. The following information is tracked for each registered plugin:
+
+  * <<groupId>> - The plugin's group id.
+
+  * <<artifactId>> - The plugin's artifact id.
+
+  * <<lastChecked>> - The timestamp from the last time updates were checked for
+    this plugin.
+
+  * <<useVersion>> - The currently registered version for this plugin. This is
+    the version Maven will use when executing this plugin's mojos.
+
+  * <<rejectedVersions>> - A list of versions discovered for this plugin which
+    have been rejected by the user. This keeps Maven from continually prompting
+    the user to update a given plugin to the same new version.
+
+* Using (or not) the Plugin Registry
+
+  There are many ways you can override the default plugin registry settings.
+  Often, this will be desirable for a single, one-off build of a project that
+  deviates from your normal environment configuration. However, before discussing
+  these options, it's important to understand how the plugin registry resolves
+  versions for unregistered plugins, along with plugins in need of an update 
+  check.
+
+** Resolving Plugin Versions
+
+  The plugin registry uses a relatively straightforward algorithm for resolving
+  plugin versions. However, considerations for when to check, when to prompt the
+  user, and when to persist resolved plugin versions complicate this 
+  implementation considerably. In general, plugin versions are resolved using a 
+  four-step process:
+
+  [[1]] Check for a plugin configuration in the MavenProject instance. Any
+        plugin configuration found in the MavenProject is treated as authoritative,
+        and will stop the plugin-version resolution/persistence process when
+        found.
+
+  [[2]] If the plugin registry is enabled, check it for an existing registered 
+        version. If the plugin has been registered, a combination of the 
+        updateInterval configuration and the lastChecked attribute (on the 
+        plugin) determine whether the plugin needs to be checked for updates. 
+        If the plugin doesn't need an update check, the registered version is 
+        used.
+
+        If the plugin is due for an update check, the plugin-artifact's RELEASE
+        metadata is resolved. Resolution of this metadata may trigger a prompt
+        to notify the user of the new version, and/or persistence of the new
+        version in the registry. If the update is performed, the lastChecked
+        attribute is updated to reflect this.
+
+  [[3]] <If> the <<checkLatest>> configuration is set to <<<true>>>, or the
+        <<<'--check-plugin-latest'>>> CLI option (discussed later) is 
+        provided, then the LATEST artifact metadata is resolved for the plugin.
+
+        If this metadata is resolved successfully, that version is used.
+        This may trigger a prompt to ask the user whether to register the 
+        plugin, and a successive persistence step for the new plugin version.
+
+  [[4]] If the version still has not been resolved, RELEASE artifact 
+        metadata is checked for the plugin. If this metadata resolves 
+        successfully, it is the version used. This may also trigger a prompt
+        to ask the user whether to register the plugin, and a persistence step
+        registering the new plugin version.
+
+  I've alluded to prompting the user and persisting the plugin version into
+  the registry. Now, let's examine the circumstances under which these steps 
+  actually take place.
+
+  There are two cases where the user may be prompted to change the plugin
+  registry; when the plugin is not registered, and when the plugin is registered,
+  but an updated version is discovered. By default, the user is prompted to save
+  the resolved version for each plugin, with the option of specifying that a
+  decision should be remembered and applied to all (either yes to all, or no
+  to all) plugins registry updates. However, it is also possible to bypass
+  this behavior in the following ways:
+
+  * Specify <<autoUpdate>> == <<<true>>> in the plugin-registry.xml. This
+    configuration parameter means that the user is not prompted, and all
+    updated/discovered versions are to be persisted.
+
+  * Specify <<<'--batch-mode'>>> (or <<<'-B'>>>) from the command line.
+    This functions in the same way as the <<autoUpdate>> config parameter
+    above.
+
+  * Specify <<<'--no-plugin-updates'>>> | <<<'-npu'>>> from the command line.
+    This prevents any updates or new registrations from taking place, but
+    existing plugin versions in the registry will be used when available.
+
+  * Specify <<<'--check-plugin-updates'>>> | <<<'--update-plugins'>>> |
+    <<<'-up'>>> | <<<'-cpu'>>> (synonyms) from the command line.
+
+  * Specify <<<'--no-plugin-registry'>>> | <<<'-npr'>>> from the command line.
+    This prevents resolution of plugin versions using the plugin-registry.xml
+    file. The plugin version will be resolved either from the project or 
+    from the repository in this case.
+
+  * Specify <<usePluginRegistry>> == <<<false>>> in the settings.xml. This
+    configuration parameter will disable use of the plugin registry for the
+    entire build environment, as opposed to the immediate build execution
+    (as in the case of the corresponding command line switch above).
+
+    These force all registered plugins to be updated. The user will still
+    be prompted to approve plugin versions, unless one of the above switches
+    is also provided.
+
+** Summary of Command Line Options for the Plugin Registry
+
+  The following summary of command line options is provided for quick reference:
+
+  * <<<--no-plugin-registry>>> - Bypass the plugin registry.
+
+    <Synonym:> <<<-npr>>>
+
+  * <<<--no-plugin-latest>>> - Don't check the LATEST artifact metadata when
+    resolving plugin versions, regardless of the value of <<useLatest>> in 
+    the plugin-registry.xml file.
+
+    <Synonym:> <<<-npl>>>
+
+  * <<<--check-plugin-latest>>> - Check the LATEST artifact metadata when
+    resolving plugin versions, regardless of the value of <<useLatest>> in
+    the plugin-registry.xml file.
+
+    <Synonym:> <<<-cpl>>>
+
+  * <<<--no-plugin-updates>>> - Do not search for updated versions of registered
+    plugins. Only use the repository to resolve unregistered plugins.
+
+    <Synonym:> <<<-npu>>>
+
+  * <<<--check-plugin-updates>>> - Force the plugin version manager to check for
+    updated versions of any registered plugins, currently using RELEASE metadata
+    <<only>>.
+
+    <Synonyms:> <<<--update-plugins>>> <<<-up>>> <<<-cpu>>>

Propchange: maven/components/trunk/maven-site/src/site/apt/plugin-registry-overview.apt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-site/src/site/apt/plugin-registry-overview.apt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org