maven/maven-wrapper/README.md

86 lines
2.8 KiB
Markdown
Raw Normal View History

2015-04-03 15:18:39 -04:00
# Maven Wrapper
2013-03-04 11:23:45 -05:00
2017-04-24 15:14:09 -04:00
The Maven Wrapper is an easy way to ensure a user of your Maven build has everything necessary to run your Maven build.
Why might this be necessary? Maven to date has been very stable for users, is available on most systems or is easy to
procure: but with many of the recent changes in Maven it will be easier for users to have a fully encapsulated build
setup provided by the project. With the Maven Wrapper this is very easy to do and it's a great idea borrowed from Gradle.
2013-03-04 11:24:48 -05:00
2017-04-24 15:14:09 -04:00
The easiest way to setup the Maven Wrapper for your project is to use the [Takari Maven Plugin][1] with its provided
`wrapper` goal. To add or update all the necessary Maven Wrapper files to your project execute the following command:
2013-03-04 11:24:48 -05:00
2015-04-03 15:18:39 -04:00
```
mvn -N io.takari:maven:wrapper
```
2013-03-04 11:24:48 -05:00
2015-08-19 23:25:01 -04:00
Normally you instruct users to run the `mvn` command like the following:
2013-03-04 11:24:48 -05:00
2015-04-03 15:18:39 -04:00
```
$ mvn clean install
```
But now, with a Maven Wrapper setup, you can instruct users to run wrapper scripts:
2015-04-03 15:18:39 -04:00
```
$ ./mvnw clean install
```
or
```
$ ./mvnw.cmd clean install
```
2017-04-24 15:14:09 -04:00
A normal Maven build will be executed with the one important change that if the user doesn't have the necessary version
of Maven specified in `.mvn/wrapper/maven-wrapper.properties` it will be downloaded for the user first.
2015-04-03 15:18:39 -04:00
2017-04-17 17:06:44 -04:00
## Supported Systems
The wrapper should work on various operating systems including
* Linux (numerous versions, tested on Ubuntu and CentOS)
* OSX
* Windows (various newer versions)
* Solaris (10 and 11)
2017-04-17 17:58:21 -04:00
For all those *nix operating systems, various shells should work including
2017-04-17 17:06:44 -04:00
2017-04-17 17:58:21 -04:00
* sh
2017-04-17 17:06:44 -04:00
* bash
* dash
* zsh
2017-04-17 17:58:21 -04:00
In terms of Apache Maven versions itself, the wrapper should work with any Maven 3.x version and it defaults to the
latest release - currently 3.5.0. We do NOT plan to support the deprecated, EOL'ed Maven 2.x.
2017-04-04 15:49:36 -04:00
2017-04-21 23:51:39 -04:00
The maven-wrapper itself is compiled to work with Java 5. The Takari Maven Plugin for installation however uses Java 7.
Once the wrapper is installed with the plugin you should be able to use the wrapper on the project with Java 5 and up.
This is however not really tested by the committers.
2017-04-04 15:49:36 -04:00
## Changes
Please check out the [changelog](./CHANGELOG.md) for more information about our releases.
## Verbose Mode
The wrapper supports a verbose mode in which it outputs further information. It
is activated by setting the MVNW_VERBOSE environment variable to `true`.
By default it is off.
## Using a Different Version of Maven
To switch the version of Maven used to build a project you can initialize it using
```
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
```
2017-04-24 15:14:09 -04:00
which works for any version except snapshots. Once you have a wrapper you can change its version by setting the
`distributionUrl` in `.mvn/wrapper/maven-wrapper.properties`, e.g.
```
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.2.1/apache-maven-3.2.1-bin.zip
```
[1]: https://github.com/takari/takari-maven-plugin