community.general.maven_artifact module – Downloads an Artifact from a Maven Repository
Note
This module is part of the community.general collection (version 10.7.5).
You might already have this collection installed if you are using the ansible package.
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.general.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: community.general.maven_artifact.
Synopsis
- Downloads an artifact from a maven repository given the maven coordinates provided to the module. 
- Can retrieve snapshots or release versions of the artifact and resolve the latest available version if one is not available. 
Requirements
The below requirements are needed on the host that executes this module.
- lxml 
- boto if using a S3 repository ( - s3://...)
Parameters
| Parameter | Comments | 
|---|---|
| The maven artifactId coordinate. | |
| The attributes the resulting filesystem object should have. To get supported flags look at the man page for  This string should contain the attributes in the same order as the one displayed by  The  | |
| If  If  Choices: 
 | |
| The maven classifier coordinate. Default:  | |
| PEM formatted certificate chain file to be used for SSL client authentication. This file can also include the key as well, and if the key is included,  | |
| PEM formatted file that contains your private key to be used for SSL client authentication. If  | |
| The path where the artifact should be written to. If file mode or ownerships are specified and destination path already exists, they affect the downloaded file. | |
| Filesystem permission mode applied recursively to  | |
| The maven type/extension coordinate. Default:  | |
| 
 Choices: 
 | |
| Name of the group that should own the filesystem object, as would be fed to  When left unspecified, it uses the current group of the current user unless you are root, in which case it can preserve the previous ownership. | |
| The Maven groupId coordinate. | |
| Add custom HTTP headers to a request in hash/dict format. | |
| If  This option only has effect when  Choices: 
 | |
| The permissions the resulting filesystem object should have. For those used to  Giving Ansible a number without following either of these rules will end up with a decimal number which will have unexpected results. As of Ansible 1.8, the mode may be specified as a symbolic mode (for example,  If  If  Specifying  | |
| Name of the user that should own the filesystem object, as would be fed to  When left unspecified, it uses the current user unless you are root, in which case it can preserve the previous ownership. Specifying a numeric username will be assumed to be a user ID and not a username. Avoid numeric usernames to avoid this confusion. | |
| The password to authenticate with to the Maven Repository. Use AWS secret access key of the repository is hosted on S3. | |
| The URL of the Maven Repository to download from. Use  Use  Default:  | |
| The level part of the SELinux filesystem object context. This is the MLS/MCS attribute, sometimes known as the  When set to  | |
| The role part of the SELinux filesystem object context. When set to  | |
| The type part of the SELinux filesystem object context. When set to  | |
| The user part of the SELinux filesystem object context. By default it uses the  When set to  | |
| The desired state of the artifact. Choices: 
 | |
| Specifies a timeout in seconds for the connection attempt. Default:  | |
| A list of headers that should not be included in the redirection. This headers are sent to the  On ansible-core version 2.12 or later, the default of this option is  Useful if the redirection URL does not need to have sensitive headers in the request. Requires ansible-core version 2.12 or later. | |
| Influence when to use atomic operation to prevent data corruption or inconsistent reads from the target filesystem object. By default this module uses atomic operations to prevent data corruption or inconsistent reads from the target filesystem objects, but sometimes systems are configured or just broken in ways that prevent this. One example is docker mounted filesystem objects, which cannot be updated atomically from inside the container and can only be written in an unsafe manner. This option allows Ansible to fall back to unsafe methods of updating filesystem objects when atomic operations fail (however, it doesn’t force Ansible to perform unsafe writes). IMPORTANT! Unsafe writes are subject to race conditions and can lead to data corruption. Choices: 
 | |
| The username to authenticate as to the Maven Repository. Use AWS secret key of the repository is hosted on S3. | |
| If  Choices: 
 | |
| If  If  If  
 Choices: 
 | |
| The maven version coordinate. Mutually exclusive with  | |
| The maven dependency version ranges. See supported version ranges on https://cwiki.apache.org/confluence/display/MAVENOLD/Dependency+Mediation+and+Conflict+Resolution. The range type  Mutually exclusive with  | 
Attributes
| Attribute | Support | Description | 
|---|---|---|
| Support: none | Can run in  | |
| Support: none | Will return details on what has changed (or possibly needs changing in  | 
Examples
- name: Download the latest version of the JUnit framework artifact from Maven Central
  community.general.maven_artifact:
    group_id: junit
    artifact_id: junit
    dest: /tmp/junit-latest.jar
- name: Download JUnit 4.11 from Maven Central
  community.general.maven_artifact:
    group_id: junit
    artifact_id: junit
    version: 4.11
    dest: /tmp/junit-4.11.jar
- name: Download an artifact from a private repository requiring authentication
  community.general.maven_artifact:
    group_id: com.company
    artifact_id: library-name
    repository_url: 'https://repo.company.com/maven'
    username: user
    password: pass
    dest: /tmp/library-name-latest.jar
- name: Download an artifact from a private repository requiring certificate authentication
  community.general.maven_artifact:
    group_id: com.company
    artifact_id: library-name
    repository_url: 'https://repo.company.com/maven'
    client_cert: /path/to/cert.pem
    client_key: /path/to/key.pem
    dest: /tmp/library-name-latest.jar
- name: Download a WAR File to the Tomcat webapps directory to be deployed
  community.general.maven_artifact:
    group_id: com.company
    artifact_id: web-app
    extension: war
    repository_url: 'https://repo.company.com/maven'
    dest: /var/lib/tomcat7/webapps/web-app.war
- name: Keep a downloaded artifact's name, i.e. retain the version
  community.general.maven_artifact:
    version: latest
    artifact_id: spring-core
    group_id: org.springframework
    dest: /tmp/
    keep_name: true
- name: Download the latest version of the JUnit framework artifact from Maven local
  community.general.maven_artifact:
    group_id: junit
    artifact_id: junit
    dest: /tmp/junit-latest.jar
    repository_url: "file://{{ lookup('env','HOME') }}/.m2/repository"
- name: Download the latest version between 3.8 and 4.0 (exclusive) of the JUnit framework artifact from Maven Central
  community.general.maven_artifact:
    group_id: junit
    artifact_id: junit
    version_by_spec: "[3.8,4.0)"
    dest: /tmp/
