 -----
 Shared Components
 -----
 Dennis Lundberg
 John Casey
 Karl Heinz Marbaise
 -----
 2017-05-03
 -----

~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements.  See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership.  The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License.  You may obtain a copy of the License at
~~
~~   http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied.  See the License for the
~~ specific language governing permissions and limitations
~~ under the License.

~~ NOTE: For help with the syntax of this file, see:
~~ https://maven.apache.org/doxia/references/apt-format.html

Shared Components

  The shared components are currently under transition to Maven 3.x only components.

*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
|| <<Shared Component>>                                                      || <<Version>> || <<Release Date>> || <<Description>> || <<Source Repository>> || <<Issue Tracking>> |
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/file-management/} <<<file-management>>>}}                       | 3.0.0        | 2015-12-25        | API to collect files from a given directory using several include/exclude rules. | {{{https://gitbox.apache.org/repos/asf/maven-file-management.git}Git}} / {{{https://github.com/apache/maven-file-management/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13262}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-archiver/} <<<maven-archiver>>>}}                         | 3.5.0        | 2019-10-23        | Is mainly used by plugins to handle packaging. | {{{https://gitbox.apache.org/repos/asf/maven-archiver.git}Git}} / {{{https://github.com/apache/maven-archiver/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13268}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-artifact-transfer/} <<<maven-artifact-transfer>>>}}       | 0.12.0       | 2019-11-30        | An API to install, deploy and resolve artifacts with Maven | {{{https://gitbox.apache.org/repos/asf/maven-artifact-transfer.git}Git}} / {{{https://github.com/apache/maven-artifact-transfer/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13281}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-common-artifact-filters/} <<<maven-common-artifact-filters>>>}}  | 3.1.0 | 2018-12-18        | Filters lists of Artifact instances. | {{{https://gitbox.apache.org/repos/asf/maven-common-artifact-filters.git}Git}} / {{{https://github.com/apache/maven-common-artifact-filters/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13269}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-dependency-analyzer/} <<<maven-dependency-analyzer>>>}}   | 1.11.1        | 2018-12-25        | Maven Dependency Analyzer component. | {{{https://gitbox.apache.org/repos/asf/maven-dependency-analyzer.git}Git}} / {{{https://github.com/apache/maven-dependency-analyzer/}GitHub}} | {{{https://issues.apache.org/jira/issues/?jql=project%20%3D%20MSHARED%20AND%20component%20%3D%20maven-dependency-analyzer}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-dependency-tree/} <<<maven-dependency-tree>>>}}           | 3.0.1        | 2017-05-07        | Maven Dependency Tree constructs a tree model of a Maven project's dependencies. | {{{https://gitbox.apache.org/repos/asf/maven-dependency-tree.git}Git}} / {{{https://github.com/apache/maven-dependency-tree/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13264}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/doxia/doxia-sitetools/doxia-integration-tools/} <<<maven-doxia-tools>>>}} |           |                   | moved to {{{/doxia/doxia-sitetools/doxia-integration-tools/} <<<doxia-integration-tools>>>}} | |
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-filtering/} <<<maven-filtering>>>}}                       | 3.1.1        | 2016-06-02        | Components for filtering resources. | {{{https://gitbox.apache.org/repos/asf/maven-filtering.git}Git}} / {{{https://github.com/apache/maven-filtering/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13380}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-invoker/} <<<maven-invoker>>>}}                           | 3.0.1        | 2018-05-29        | Fires up a Maven build in a new JVM. | {{{https://gitbox.apache.org/repos/asf/maven-invoker.git}Git}} / {{{https://github.com/apache/maven-invoker/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13271}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-jarsigner/} <<<maven-jarsigner>>>}}                       | 3.0.0        | 2018-10-31        | This component provides some utilities to sign/verify jars/files in your Mojos. | {{{https://gitbox.apache.org/repos/asf/maven-jarsigner.git}Git}} / {{{https://github.com/apache/maven-jarsigner/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/15255}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-mapping/} <<<maven-mapping>>>}}                           | 3.0.0        | 2015-11-19        | A shared component for all plugins that need to do mapping. | {{{https://gitbox.apache.org/repos/asf/maven-mapping.git}Git}} / {{{https://github.com/apache/maven-mapping/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/16150}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-reporting-api/} <<<maven-reporting-api>>>}}               | 3.0          | 2010-05-12        | API to manage report generation. | {{{https://gitbox.apache.org/repos/asf/maven-reporting-api.git}Git}} / {{{https://github.com/apache/maven-reporting-api/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/14413}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-reporting-exec/} <<<maven-reporting-exec>>>}}             | 1.4          | 2017-10-16        | API to manage report plugins preparation with Maven 3. | {{{https://gitbox.apache.org/repos/asf/maven-reporting-exec.git}Git}} / {{{https://github.com/apache/maven-reporting-exec/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/14716}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-reporting-impl/} <<<maven-reporting-impl>>>}}             | 3.0.0        | 2017-06-21        | Abstract classes to manage report generation. | {{{https://gitbox.apache.org/repos/asf/maven-reporting-impl.git}Git}} / {{{https://github.com/apache/maven-reporting-impl/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13274}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-script-interpreter/} <<<maven-script-interpreter>>>}}     | 1.2          | 2017-07-21        | Utilities to interpret/execute some scripts for various implementations: groovy or beanshell. | {{{https://gitbox.apache.org/repos/asf/maven-script-interpreter.git}Git}} / {{{https://github.com/apache/maven-script-interpreter/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/15256}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-shared-incremental/} <<<maven-shared-incremental>>>}}     | 1.1          | 2013-04-08        | Various utility classes and plexus components for supporting incremental build functionality in Maven plugins. | {{{https://gitbox.apache.org/repos/asf/maven-shared-incremental.git}Git}} / {{{https://github.com/apache/maven-shared-incremental/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/15650}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-shared-jar/} <<<maven-shared-jar>>>}}                     | 1.2          | 2015-12-31        | Utilities which help identify the contents of a JAR, including Java class analysis and Maven metadata analysis. | {{{https://gitbox.apache.org/repos/asf/maven-shared-jar.git}Git}} / {{{https://github.com/apache/maven-shared-jar/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13279}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-shared-resources/} <<<maven-shared-resources>>>}}         | 2            | 2015-02-05        | This is a collection of templates that are specific to the Maven project. | {{{https://gitbox.apache.org/repos/asf/maven-shared-resources.git}Git}} / {{{https://github.com/apache/maven-shared-resources/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/14715}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-shared-utils/} <<<maven-shared-utils>>>}}                 | 3.2.1        | 2018-02-10        | Utilities functions for use within Maven. | {{{https://gitbox.apache.org/repos/asf/maven-shared-utils.git}Git}} / {{{https://github.com/apache/maven-shared-utils/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/15606}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-shared-io/} <<<maven-shared-io>>>}}                       | 3.0.0        | 2015-12-23        | API for I/O support like logging, download or file scanning. | {{{https://gitbox.apache.org/repos/asf/maven-shared-io.git}Git}} / {{{https://github.com/apache/maven-shared-io/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/12326440/}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/shared/maven-verifier/} <<<maven-verifier>>>}}                         | 1.7.2        | 2020-05-06        | Used to run Maven builds as part of tests. | {{{https://gitbox.apache.org/repos/asf/maven-verifier.git}Git}} / {{{https://github.com/apache/maven-verifier/}GitHub}} | {{{https://issues.apache.org/jira/browse/MSHARED/component/13281}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+
| {{{/scm/} <<<maven-scm>>>}}                                                | 1.11.2       | 2019-03-16        | Generic API to SCM systems.               | {{{https://gitbox.apache.org/repos/asf/maven-scm.git}Git}} / {{{https://github.com/apache/maven-scm/}GitHub}} | {{{https://issues.apache.org/jira/browse/SCM}JIRA}}
*----------------------------------------------------------------------------+--------------+-------------------+------------------+------------------------+---------------------+


  Archived version of shared libraries reference documentations are {{{../shared-archives/}located here}}.

