////
   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

     https://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.
////

[*__since 1.3__*]

Installs a module and all its dependencies in a resolver.

The module to install should be available in a resolver, and will be installed in another resolver which should support publish.

This is particularly useful for users who only have a private repository, and want to benefit from public repositories from time to time. In this case, when a module is missing in the private repository, a call to install lets download the module from a public repository not usually used for dependency resolution, and install it and its dependencies in the private repository.

For more details about this task and its usage see the link:../tutorial/build-repository.html[build repository tutorial]

== Attributes

[options="header",cols="15%,50%,35%"]
|=======
|Attribute|Description|Required
|from|the name of the resolver in which the module must be found|Yes
|to|the name of the resolver in which the module must be installed|Yes
|organisation|the name of the organisation of the module to install|Yes
|module|the name of the module to install|Yes
|branch|the branch of the module to install (*__since 2.0__*)|No, defaults to default branch with exact matcher, `*` with any other matcher
|revision|the revision of the module to install|Yes
|type|the type(s) of artifact(s) to install.  You can give multiple values separated by commas|No, defaults to `*` meaning all types
|conf|the configurations to install. Only the dependencies of the specified configurations will be installed. (*__since 2.3__*)|No, defaults to `*` meaning all configurations
|validate|`true` to force Ivy files validation against ivy.xsd, `false` to force no validation|No. Defaults to default Ivy value (as configured in settings)
|overwrite|`true` to override modules already present in the destination resolver, `false` otherwise|No, defaults to `false`
|transitive|`true` to install the module and all its transitive dependencies, `false` to install only the module|No, defaults to `false`
|matcher|the name of the matcher to use to find the modules to install|No, defaults to `exact`
|settingsRef|A reference to Ivy settings that must be used by this task (*__since 2.0__*)|No, defaults to `ivy.instance`.
|haltonfailure|`true` to fail build on unresolved dependencies (*__since 2.0__*)|No, defaults to `true`
|installOriginalMetadata|`true` to install original metadata (if available). If the module has been originally resolved from a m2 repository, the original metadata is the original POM file (*__since 2.4__*)|No, defaults to `false`
|=======

== Examples

[source,xml]
----
<ivy:install organisation="apache" module="commons-lang" revision="2.0" from="ivyrep" to="myfsresolver"/>
----

Installs the module `commons-lang` from `apache` in revision 2.0 in the resolver `myfsresolver`. The module is found in the resolver named `ivyrep`.
