简介
1.是一个项目构建工具
2.中央仓库啥jar包都有因为版权问题没有oracel的
3.许晓斌(Juven Xu),国内社区公认的Maven技术专家、Maven中文用户组创始人、Maven技术的先驱和积极推动者,著有《Maven实战》一书
好处
1.比原有的项目空间更小(jar所占的空间)
如何实现
1.依赖管理
2.maven构建
code
编译
测试
打包
部署
安装、配置本地仓库
1.安装前提
需要java JDK
2.配置本地仓库(这个网上很多教程)
maven标准目录
src
源码文件夹
pom.xml
配置文件
target
存好编译后的源码的
![这里写图片描述](https://img-blog.csdn.net/20170819214051779?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWVuZ3hpYW5neGluZ2Rvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
命令
1.mvn help:system
初始化maven仓库
2.mvn tomcat:run
发布到tomcat上
3.mvn -version
查询当前的mvn版本的信息
4.mvn clean
清理项目
会把之前生成的class文件删除掉
target目录删除掉了
5.mvn -compile
编译项目
将target目录重新生成
6.mvn -test
将test项目文件下的单元测试全部执行
就是以前的标准单元测试命名
7.mvn package
将项目打包
生成了war格式的
8.mvn install
安装
本地项目公用一个jar
整合web项目案例
构建索引
show view
maven
构建索引
rebuild index
添加依赖之后先项目右键update
创建项目
创建好的项目会出现以下错误
1.web.xml缺失
2.jdk编译环境为1.5
运行maven项目
项目-run as
maven bulid..
手动输入命令
maven bulid
历史记录
调试项目
debug as
要关联源码
POM 4中
1.dependency>中还引入了scope
- compile,缺省值,适用于所有阶段,会随着项目一起发布。
- provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
- runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段
- test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
- system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
如果使用tomcat也有的jar
scope要设置为provideed
maven的生命周期
三套生命周期
1.clean 清理周期
pre-clean
clean
post-clean2.default默认周期
validate
initialize
generate-sources
process-sources 处理项目主资源文件 src/main/resources
generate-resources
porcess-resources
compile 编译项目主源码
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 处理荐测试资源文件 src/test/resources
test-compile 编译项目测试代码
process-test-compile
test 使用单元测试框架运行测试,但测试代码不会被打包或部署
prepare-package
package
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装到本地仓库
deploy 将包复制到远程仓库site
pre-site
site
post-site
site-deploy
将工具类,作为一个工程打印成jar包
仓库
1.远程仓库
1.远程仓库配置
Pom文件repository标签(属性:id,name,url,releases(updatePolicy,checksumPolicy),snapshots(updatePolicy,checksumPolicy))
2.远程仓库认证
setting.xml中servers标签(id,username,password)
3.部署至远程仓库
pom文件distributionManagement标签(repository(id,name,url),snapshotRepository);
2.中央仓库
3.私服
Nexus
group
hosted
proxy
virtual
其它公共库
镜像
本地仓库
插件
插件目标
Maven的生命周期是抽象的,具体任务由插件来完成,一般插件可以完成多个任务(如maven-site-plugin包含site和deploy功能).
一个功能对应一个目标 如:site:deploy 冒号前面是插件简称,后边是目标。
插件绑定
项目编译此任务对应default生命周期的compile阶段,而maven-compiler-plugin插件的compile目标完成此任务。因此将它们绑定就可实现项目编译内置绑定
为了减少配置maven 在核心为主要的生命周期绑定了很多插件目标。自定义绑定
plugin标签中execution>id>phase>goal>execution>
传递依赖冲突解决
依赖范围
compile
test
provided
runtime
system依赖调解
1.路径最者短被引用
2.第一声明者优先引用(POM中的声明顺序)
可选依赖
排除依赖
归类依赖
遇到的错误
先检查关键字是否出错
其次吧自己的setting配置一个好的的maven链接
安装部分插件