| <!-- |
| 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 |
| |
| http://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. |
| --> |
| # Configuring Apache Maven |
| |
| ## System properties and JVM |
| |
| The `MAVEN_OPTS` environment variable contains parameters used to |
| start up the JVM running Maven and can be used to supply additional |
| options to it. For example, JVM memory settings could be defined |
| with the value `-Xms256m -Xmx512m`. |
| |
| JVM options can also be configured in the |
| `${session.rootDirectory}/.mvn/jvm.config` file, which means you can |
| define the options for your build on a per-project basis. This file |
| will become part of your project and will be checked in along with |
| your project. |
| |
| So for example if you put the following JVM options into the |
| `.mvn/jvm.config` file: |
| ``` |
| -Xmx2048m -Xms1024m -XX:MaxPermSize=512m -Djava.awt.headless=true |
| ``` |
| |
| The content of this file will be appended to the `MAVEN_OPTS` |
| environment variable. |
| |
| Note that the above mechanism is handled by the Maven launch |
| scripts `mvn` and `mvnDebug` (`mvn.cmd` and `mvnDebug.cmd` on |
| Windows platforms). |
| |
| ## User Properties |
| |
| Once the JVM is started, Maven uses _user properties_ to configure |
| various parts of the system. The main entry point is the |
| `${maven.home}/conf/maven.properties` properties file. This file, |
| along with any other files loaded from it (see below) are called |
| _Maven properties files_ and are Java properties files with a |
| few enhancements. Contrary to standard properties file, those files |
| are UTF-8 encoded. |
| |
| ### File Inclusion |
| |
| Additional files can be loaded using the special `${includes}` key. |
| The associated value is a comma-separated list of additional files to |
| include. Each item may be enclosed in quotes to gracefully include spaces. |
| Items are trimmed before being loaded. If the first character of an item |
| is a question mark, the load will silently fail if the file does not exist. |
| ``` |
| ${includes} = ?"${maven.user.conf}/maven-system.properties", \ |
| ?"${maven.project.conf}/maven-system.properties" |
| ``` |
| |
| ### Property Substitution |
| |
| Properties undergo the _property substitution_ process, so that any |
| value containing a `${xxx}` placeholder will be substituted with the value |
| of the `xxx` property. In addition to properties defined in the files |
| being loaded, the following properties are defined: |
| * `session.topDirectory` |
| * `session.rootDirectory` |
| * `maven.version` |
| * `maven.build.version` |
| * `env.XYZ` to refer to the `XYZ` environment variable |
| * `cli.OPT` to refer to the `OPT` command line option |
| * system properties |
| |
| The main system properties source `${maven.home}/conf/maven-system.properties` defines a few basic properties, |
| but more importantly, loads the _user wide_ system properties from `~/.m2/maven-system.properties` |
| and the _project_ specific system properties from `${session.rootDirectory}/.mvn/maven-system.properties`. |
| |
| The main user properties source `${maven.home}/conf/maven-user.properties` defines a few inclusions only, to |
| load the _user wide_ user properties from `~/.m2/maven-user.properties` and the _project_ specific user properties |
| from `${session.rootDirectory}/.mvn/maven-user.properties`. |
| |
| ## Settings |
| |
| ## Extensions |
| |
| ## Maven Command Line Arguments |
| |
| Maven is a command line tool, and, as such, accepts various command |
| line arguments. The `MAVEN_ARGS` environment value is used to |
| provide additional arguments to Maven. Those arguments will be |
| prepended to the actual list of command line arguments. |
| |
| For example, options and goals could be defined with the value |
| `-B -V checkstyle:checkstyle`. |
| |