Maven是Java的包管理工具
简介
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
安装
下载解压
下载地址:http://maven.apache.org/download.cgi
我选择的版本:apache-maven-3.3.3-bin.zip
下载完后,解压到安装目录:D:\softwore\apache-maven-3.3.3
Linux 配置
tar -zxvf apache-maven-3.3.3-bin.tar.gz -C /usr/loca/
export PATH=/usr/loca/apache-maven-3.3.3/bin:$PATH
# 选项,配置不验证 SSL 证书
$ cat << EOF > ~/.mavenrc
MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true"
EOF
Widnows 配置
下面开始配置环境变量,右击【我的电脑】—【属性】—【高级】—【环境变量】:
在【系统变量】选择“新建”–弹出“新建系统变量”对话框,在“变量名”文本框输入“MAVEN_HOME”,在“变量值”文本框输入JDK的安装路径,单击“确定”按钮:
MAVEN_HOME
D:\softwore\apache-maven-3.3.3
在“系统变量”选项区域中查看PATH变量,如果不存在,则新建变量 PATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“%MAVEN_HOME%\bin”,单击确定按钮:
%MAVEN_HOME%\bin;
现在测试环境变量的配置成功与否。在DOS命令行窗口输入“JAVAC”,输出帮助信息即为配置正确,如下:
C:\Users\xiexianbin>mvn --version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:3
7+08:00)
Maven home: D:\softwore\apache-maven-3.3.3\bin\..
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_25\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
C:\Users\xiexianbin>
配置缓存目录
修改 apache-maven-3.5.2\conf\settings.xml
:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>F:\java_cache\.m2\repository</localRepository>
配置代理
<settings>
.
<proxies>
<proxy>
<id>example-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy.example.com</host>
<port>8080</port>
<username>proxyuser</username>
<password>somepassword</password>
<nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
</proxy>
</proxies>
.
</settings>
配置加速
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
mvnw 介绍
mvnw(Maven Wrapper)
负责给特定的项目安装指定版本的Maven,且不影响其他项目
- 官网
- 创建,在
pom.xml
目录执行
$ mvn wrapper:wrapper
# 目录结构
$ tree <project-name>
├── .mvn
│ └── wrapper
│ ├── MavenWrapperDownloader.java
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
...
./mvnw clean install
./mvnw clean package
FaQ
解决Maven报Plugin execution not covered by lifecycle configuration问题
一个错误示例,子项目引用了父项目,子项目parent标签处报错如下:
Multiple annotations found at this line:
- maven-enforcer-plugin (goal "enforce") is ignored by m2e.
- Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.3.1:compile (execution:
default, phase: compile)
解决办法,参照官网给出解释及解决办法:http://wiki.eclipse.org/M2E_plugin_execution_not_covered
在 标签外再套一个 标签可以解决该问题:
http://stackoverflow.com/questions/6352208/how-to-solve-plugin-execution-not-covered-by-lifecycle-configuration-for-sprin
<build>
<pluginManagement>
<plugins>
<plugin> ... </plugin>
<plugin> ... </plugin>
....
</plugins>
</pluginManagement>
</build>
但是有时候父项目pom不能被修改,可用官网最后给出的解决办法:
Window-Perferences-Maven-Lifecycle Mapping
保存如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<goals>
<goal>compile</goal>
</goals>
<versionRange>[1.3,)</versionRange>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
记得点击 Reload workspace lifecycle mappings metadata
按钮