<?xml version="1.0" encoding="UTF-8" standalone="yes"?><extensionVersion xmlns="http://www.xwiki.org/extension"><id>org.xwiki.commons:xwiki-commons-extension-repository-maven</id><name>XWiki Commons - Extension - Repository - Maven</name><type>jar</type><rating><totalVotes>0</totalVotes><averageVote>0.0</averageVote></rating><summary>XWiki Commons - Extension - Repository - Maven</summary><description>Allows to download extensions coming from a [[Maven repository&gt;&gt;http://www.maven.org]].

= 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##
|##http.headers.*##|13.0RC1|A header value|Custom HTTP headers to be used when connecting to the maven repository. The name of the header is defined at the end of the configuration key : ##http.headers.myheadername##. This configuration key can be repeated over multiple lines in order to define different headers.

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##&gt;&gt;https://maven.apache.org/resolver/apidocs/org/eclipse/aether/ConfigurationProperties.html]]. 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 "&lt;version&gt; is best but greater version is accepted" while in Maven it means "&lt;version&gt; 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&gt;&gt;Extension.Extension Module Versions]] 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 {{code language="xml"}}&lt;optional&gt;true&lt;/optional&gt;{{/code}}. Since 11.7RC1 this applies 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 generally be XWiki extensions: "org.xwiki" and "com.xwiki").

= Exclusions =

The support for {{code language="xml"}}&lt;exclusions&gt;{{/code}} has been added in XWiki 12.2. Before that this information is ignored and excluded dependencies are installed.

= 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.2|##STRING##|The extension pretty name. Overrides ##&lt;name&gt;## standard Maven property.
|xwiki.extension.summary|4.2|##STRING##|A short summary of the extension. Overrides ##&lt;description&gt;## standard Maven property.
|xwiki.extension.website|4.2|##URL##|The home page of the extension. Overrides ##&lt;website&gt;## standard Maven property.
|xwiki.extension.features|3.2|##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&gt;&gt;Extension.Extension Module.Virtual extensions]] for more details.
|xwiki.extension.category|7.0|##STRING##|The category (e.g. ##application##, ##colortheme##, ##skin##, etc). Full default list is [[available here&gt;&gt;Extension.Repository Application||anchor="HCategories"]].
|xwiki.extension.namespaces|8.0|##STRING LIST##|(((
The namespaces on which the extension is allowed to be installed. The following syntaxes are supported:

* hardcoded namespaces: ##//namespace//##
  example with two namespaces: ##namespace1, namespace2##
* root namespace: ##{root}##
  example with root namespace and wiki "xwiki": ##{root}, wiki:xwiki##
* regexp: ##[//regexp//]##
  example to match all wikis starting with "wiki" and ending with a digit: ##[wiki:wiki\d]##
)))
|xwiki.extension.jar.type|9.0|##STRING##|The type of the extension. Overrides ##&lt;packaging&gt;## standard Maven property.
|xwiki.extension.optionalIncluded|11.7|##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).
|xwiki.extension.components|13.3|##COMPONENTS##|The list of ##role/hint## couples provided by the extension. Example for an extension which provide 2 macros ##mymacro## and ##myothermacro##:(((
{{code language="xml"}}
&lt;properties&gt;
  &lt;xwiki.extension.components&gt;
    org.xwiki.rendering.macro.Macro/mymacro
    org.xwiki.rendering.macro.Macro/myothermacro
  &lt;/xwiki.extension.components&gt;
&lt;/properties&gt;
{{/code}}
)))
|xwiki.extension.previousIds|14.10.2|##STRING LIST##|The previous identifiers of the extension that should be taken into account when importing the extension in a XWiki Repository

|=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.

= Maven to Extension type conversion =

Maven types often have an exact Extension type (provided it's part of the [[supported types&gt;&gt;]]) but some have special treatment:

* **pom**: module of type **pom** or dependencies of type **pom** for modules with a different default type produces Extension with [[empty type&gt;&gt;Extension.Extension Module.Extensions.Empty]]

= Maven scm metadata

{{version since="18.6.0RC1"}}
The SCM ##&lt;tag&gt;## is also extracted from the pom.xml file and exposed through ##org.xwiki.extension.ExtensionScm#getTag()##.
{{/version}}</description><licenses><name>GNU Lesser General Public License 2.1</name></licenses><website>http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension%20Module/Repositories/Maven/</website><authors><name>XWiki Development Team</name><url>https://xwiki.org/xwiki/bin/view/XWiki/XWikiTeam</url></authors><features>org.xwiki.platform:xwiki-platform-extension-repository-aether</features><features>org.xwiki.commons:xwiki-commons-extension-repository-maven</features><extensionFeatures><id>org.xwiki.platform:xwiki-platform-extension-repository-aether</id><version>4.4</version></extensionFeatures><extensionFeatures><id>org.xwiki.commons:xwiki-commons-extension-repository-maven</id><version>4.4</version></extensionFeatures><scm><connection><system>git</system><path>git://github.com/xwiki/xwiki-commons.git/xwiki-commons-pom/xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-repositories/xwiki-commons-extension-repository-maven</path></connection><developerConnection><system>git</system><path>git@github.com:xwiki/xwiki-commons.git/xwiki-commons-pom/xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-repositories/xwiki-commons-extension-repository-maven</path></developerConnection><url>https://github.com/xwiki/xwiki-commons/tree/master/xwiki-commons-pom/xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-repositories/xwiki-commons-extension-repository-maven/</url></scm><issueManagement><system>jira</system><url>https://jira.xwiki.org/browse/XCOMMONS</url></issueManagement><recommended>false</recommended><properties><key>maven.groupid</key><stringValue>org.xwiki.commons</stringValue></properties><properties><key>maven.artifactid</key><stringValue>xwiki-commons-extension-repository-maven</stringValue></properties><properties><key>maven.Model</key><stringValue>org.xwiki.commons:xwiki-commons-extension-repository-maven:jar:18.7.0</stringValue></properties><properties><key>xwiki.extension.recommendedVersions.commons</key><stringValue>org.xwiki.commons:.*/[18.7.0]</stringValue></properties><properties><key>xwiki.extension.recommendedVersions</key><stringValue>${xwiki.extension.recommendedVersion.commons}</stringValue></properties><version>4.4</version><repositories><id>maven-xwiki</id><uri>https://nexus.xwiki.org/nexus/content/groups/public</uri><type>maven</type></repositories></extensionVersion>