简介
maven对于Java相当于cocoaPods对于iOS。
官网:http://maven.apache.org/download.cgi
下载后的Maven: apache-maven-3.3.3-bin.zip
配置maven的环境变量:
本地仓库
默认本地仓库在:
系统当前用户目录下.m2
下
Maven缺省的本地仓库路径为${user.home}/.m2/repository
本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能是有些jar包的新版本没有在Maven仓库中及时更新。
修改本地创库:
在D盘下新m2\repository文件夹
可以通过修改${user.home}/.m2/settings.xml配置本地仓库路径
修改Maven安装目录下的 conf/文件夹内的setting.xml文件,新增一行:
D:\m2\repository
表示本地仓库的地址为:D:\m2\repository)
将setting.xml复制一份到
D:\m2\repository目录下
修改Eclipse中的maven配置:
更新本地仓库:
最后打开CMD,执行
mvn help:system
会发现Maven从远程库下载的jar包都会放到新修改后的路径
IntelliJ IDEA转换普通java项目为maven项目
项目上右键 Add Framework Support
,选择maven
pom.xml
Project Object Model,项目对象模型
通过xml格式保存的pom.xml文件。
作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。
一个完整的pom.xml文件,放置在项目的根目录下。
4.0.0
org.codehaus.mojo
my-project
1.0
war
- groupId : 组织标识,例如:org.codehaus.mojo,在M2_REPO目录下,将是: org/codehaus/mojo目录。
- artifactId : 项目名称,例如:my-project,在M2_REPO目录下,将是:org/codehaus/mojo/my-project目录。
- version : 版本号,例如:1.0,在M2_REPO目录下,将是:org/codehaus/mojo/my-project/1.0目录。
- packaging : 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par
POM之间的关系
主要用于POM文件的复用。
a)依赖关系:依赖关系列表(dependency list)是POM的重要部分
junit
junit
4.0
test
…
b)继承关系:继承其他pom.xml配置的机制。
比如父pom.xml:
[...]
junit
junit
4.4
test
[...]
在子pom.xml文件继承它的依赖(还可以继承其他的:developers and contributors、plugin lists、reports lists、plugin executions with matching ids、plugin configuration):
[...]
com.devzuz.mvnbook.proficio
proficio
1.0-SNAPSHOT
[...]
在这种机制下,maven还提供了一个类似java.lang.Object的顶级父pom.xml文件:
可以通过下面命令查看当前pom.xml受到超pom.xml文件的影响:
mvn help:effective-pom
c)聚合关系:用于将多个maven项目聚合为一个大的项目。
4.0.0
org.codehaus.mojo
my-parent
2.0
my-project
Maven属性
maven的属性,是值的占位符,类似EL,类似ant的属性,比如${X},可用于pom文件任何赋值的位置。有以下分类:
1. env.X:操作系统环境变量,比如${env.PATH}
2. project.x:pom文件中的属性,比如:1.0 ,引用方式:${project.version}
3. settings.x:settings.xml文件中的属性,比如:false ,引用方式:${settings.offline}
4. Java System Properties:java.lang.System.getProperties()中的属性,比如java.home,引用方式:${java.home}
5. 自定义:在pom文件中可以:c:/apps/cargo-installs ,引用方式:${installDir}
Maven构建设置
构建有两种build标签:
…
…
…
build中的主要标签:Resources和Plugins。
Resources:用于排除或包含某些资源文件.
META-INF/plexus
false
${basedir}/src/main/plexus
configuration.xml
**/*.properties
Plugins:设置构建的插件
…
org.apache.maven.plugins
maven-jar-plugin
2.0
false
true
test
…
…
---
maven 项目在pom.xml中添加jar包:
参考:http://jingyan.baidu.com/article/e75057f2dc8e90ebc91a8915.html
Maven是基于项目对象模型,提供程序构建能力、更是提供高级的项目管理工具
在开发中,我们能节约不少的磁盘开销能力,同步更新上传svn(只是一种)上的项目,也不用每次更新jar包,把jar包放在磁盘的某一处,项目中多次使用。
---
**maven 添加jar包**
1) 输入http://mvnrepository.com
![图片.png](http://upload-images.jianshu.io/upload_images/1197462-2ce1a052a583d529.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2) 搜索jar包,比如:junit
![图片.png](http://upload-images.jianshu.io/upload_images/1197462-155cca670dccdb4f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3) 一般选择使用人数最多,点击进去
4)使用人数和最新有一个权衡,选一个
![图片.png](http://upload-images.jianshu.io/upload_images/1197462-815fa75ac35a140e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
5) 复制这个dependency
6) 粘贴到`pom.xml`中去
**Maven 太慢**
Uploading Maven Repositorty Indices...太慢
我们需要换下源:
参考:
maven:
http://www.cnblogs.com/origalom/p/5987931.html (这个是aliyun的源)
1) 替换settings.xml的镜像
2)如果还不行,就clean 下
mvn clean, mvn install