note_maven的概念,作用
- maven的概念:
它是一个基于java平台的自动化构建工具(make->ant->maven->gradle)
- maven的作用:
a.管理jar
i.增加第三方jar(commons-fileupload.jar commons-io.jar)
ii.管理jar包之间的一览关系(例如当你告诉了使用commons-fileupload.jar
,它发现这个包依赖于commons-io.jar
时,它会自动下载依赖关联的所有jar,并且不会冲突)
b.将项目拆分成若干个模块
当一个项目有
UI
,Service
,Dao
层,并且每层代码很多时,maven可以将这三个层拆分为模块,同时可以将多个模块(/项目)合并为一个项目
- maven的具体用处:
- 清理 删除编译的结果,为重新编译做准备
- 编译 java编译class
- 测试 针对于项目中的关键点进行测试,亦可用 项目中的测试代码 去测试开发代码
- 报告 将测试的结果进行显示
- 打包 将项目中包含的多个文件 压缩成一个文件,用于安装或部署(java项目->jar包,web项目->war包)
- 安装 将打成的包,放到本地仓库,供其他项目使用
- 部署 将打成的包,放到服务器上准备运行(将java,ja,jsp等各个文件进行筛选组装,变成一个可以直接运行的项目)
- 自动化工具:
将原材料(java,js,css,html)->产品(可发布项目)
- 本地仓库:
- 在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件.
- Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方)
- 任何的构件都有唯一的坐标,Maven根据这个坐标定义了构件在仓库中的唯一存储路径,
参考该文章
如果在本地仓库找不到jar包
,那么它会联网去远程仓库
(其中有中央仓库,中央仓库镜像,私服)下载,中央仓库
是由那啥组织维护的(具体忘了)
- 何为依赖:
项目里面A 依赖 B 可以在pom.xml中通过dependency来配置:
<dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>4.0version> <scope>testscope> dependency>
当然也可以配置多个依赖
依赖的范围,依赖的有效性:
在不同的阶段中,所使用的classpath是不同的,在pom.xml中配置:
compile
(默认)test
provided
compile | test | provided | |
---|---|---|---|
主程序(main) | √ | × | √ |
测试程序(test) | √ | √ | √ |
部署(运行) | √ | × | × |
maven在编译.测试,运行项目时.各自使用一套classpath