Extension Repository Connector - Maven
Allows accessing extensions located in a Maven repository |
Type | JAR |
Category | |
Developed by | |
Active Installs | 0 |
Rating | |
License | GNU Lesser General Public License 2.1 |
Bundled With | XWiki Enterprise, XWiki Standard |
Table of contents
Description
Allows to download extensions coming from a Maven repository.
Properties
Key | Version | Value | Description |
---|---|---|---|
auth.user | 4.3M1 | A user id | The user to use to authenticate to the maven repository |
auth.password | 4.3M1 | A password | The password to use to authenticate to the maven repository |
checksumPolicy | 10.7RC1 | fail, warn or ignore | what to do when checksum validation fail, the default is warn |
Since 8.3 all Aether RepositorySystemSession configuration properties are supported. They usually are prefixed with "aether.". Most of them are defined in the class org.eclipse.aether.ConfigurationProperties. For example to increase the connection timeout you can use aether.connector.connectTimeout (in milliseconds).
Difference with dependency version interpretation
Soft requirement dependencies (for example "1.0") are interpreted as "<version> is best but greater version is accepted" while in Maven it means "<version> is best but any version is accepted". This decision has been made since pretty much nobody read the specification and use it properly which mean in most projects you will see almost only soft requirements used as if they meant the minimum version (including XWiki itself). This mistake is OK in Maven context where you just build your project but it's creating a mess when installing extensions with different versions of the same dependency.
Since Extension Manager internal version syntax follow Maven syntax the handler is not doing any conversion so you can look at Extension Module versions documentation for more details.
Dependencies version conflict resolution differences
While Maven select the dependency version closer to the root, Extension Manager is choosing the greatest found version.
Profiles
Since 11.0 the profile legacy is enabled by default when reading a Maven pom. In XWiki ecosystem this profile is generally used to folder module and dependencies containing retro compatibility API not used anymore but we pretty much always want then in the runtime. It may be made configurable in the future.
Optional dependencies
Extension Manager install by default dependencies with <optional>true</optional>. Since 11.7RC1 this apply only to extensions using the custom Maven property xwiki.extension.optionalIncluded with true to avoid going against Maven default behavior (for retro compatibility reasons it's true by default for grouIds prefixes known to be XWiki often be extensions: "org.xwiki" and "com.xwiki").
Exclusions
Right now Maven <exclusions> are not taken into account by Extension Manager. See the jira issue for more details and to follow progress in this.
Custom properties
It's possible to customize the pom.xml file beyond what is supported by Maven with the following custom properties:
Property | Version | Type | Description |
---|---|---|---|
xwiki.extension.name | 4.2M3 | STRING | The extension pretty name. Overrides <name> standard Maven property. |
xwiki.extension.summary | 4.2M3 | STRING | A short summary of the extension. Overrides <description> standard Maven property. |
xwiki.extension.website | 4.2M3 | URL | The home page of the extension. Overrides <website> standard Maven property. |
xwiki.extension.features | 3.2M2 | STRING LIST | The features provided by the extension ordered from most recent to oldest. Can be used for example to list old identifiers of the extension. Since 8.0 it can be associated to a version using the following syntax feature/version. See virtual extensions documentation for more details. |
xwiki.extension.category | 7.0 | STRING | The category (e.g. application, colortheme, skin, etc). Full default list is available here. |
xwiki.extension.namespaces | 8.0 | STRING LIST | The namespaces on which the extension is allowed to be installed. The following syntaxes are supported:
|
xwiki.extension.jar.type | 9.0RC1 | STRING | The type of the extension which otherwise is jar |
xwiki.extension.optionalIncluded | 11.7RC1 | BOOLEAN | Indicate if optional dependencies should be ignored or taken into account. Default is false (except for org.xwiki and com.xwiki prefixed groupIds for which it's true). |
Type | Description |
---|---|
BOOLEAN | True or False (any case) |
STRING | A free form string |
URL | A valid URL |
STRING LIST | Coma (',') or white space (' ') separated list of free form strings. Backslash ('\') can be used as an escaping characters (including for backslash). New lines are ignored when parsing so a good practice is to put each feature on a separate line. |
Custom repositories
Support for Maven <repositories> has been added in XWiki 7.3 Milestone 1. Before that it's simply ignored.
Prerequisites & Installation Instructions
We recommend using the Extension Manager to install this extension (Make sure that the text "Installable with the Extension Manager" is displayed at the top right location on this page to know if this extension can be installed with the Extension Manager).
You can also use the manual method which involves dropping the JAR file and all its dependencies into the WEB-INF/lib folder and restarting XWiki.
Dependencies
Dependencies for this extension (org.xwiki.commons:xwiki-commons-extension-repository-maven 11.8):
- org.xwiki.commons:xwiki-commons-properties 11.8
- org.xwiki.commons:xwiki-commons-environment-api 11.8
- org.xwiki.commons:xwiki-commons-extension-maven 11.8
- org.apache.maven.resolver:maven-resolver-api 1.1.1
- org.apache.maven.resolver:maven-resolver-util 1.1.1
- org.apache.maven.resolver:maven-resolver-impl 1.1.1
- org.apache.maven.resolver:maven-resolver-connector-basic 1.1.1
- org.apache.maven.resolver:maven-resolver-transport-http 1.1.1
- org.apache.maven.resolver:maven-resolver-transport-file 1.1.1
- org.apache.maven:maven-resolver-provider 3.5.4
- org.apache.maven:maven-core 3.5.4
- org.eclipse.sisu:org.eclipse.sisu.plexus 0.3.3
- javax.annotation:javax.annotation-api 1.3.2