[Java] Maven
介绍
- Maven:用于构建和管理Java相关项目的工具
- 三种工程
- jar:包括class文件,是开发是要引用的通用类
- war:包括WEB-INF,是做好的web应用,如网站或服务
- pom(project object mode):做jar包的版本控制
- 一键迁移项目
- 远程热部署
- 持续集成(CI)中的重要角色(配合jenkins)
- 节省本地磁盘空间(告诉项目使用哪个jar,去哪找)
使用
- maven安装目录
- bin:存放启动执行脚本
- boot:存放启动maven的引导文件
- conf:存放maven核心配置文件
- lib:存放maven运行时依赖jar文件
- 项目目录结构
- 统一维护jar包
- 把所有的jar包都放在"仓库“ 里
- 在pom.xml里写包名和版本号
- 不同项目共享jar包
- maven构建项目时,默认到本地仓库找依赖,如果没有就去网上下载到本地仓库
- maven构建项目后,全部产物在target目录中
- maven构建生命周期
- 清理(clean)--编译(compile)--测试(test)--打包(package)--部署(deploy)
- 项目坐标(maven项目唯一标识)
- groupId:公司组织名、域名倒置
- artifactId:项目名
- version:版本号
- name:项目名
- url:项目上线地址
- properties:项目配置
- sourceEncoding:项目编码
- compiler.source:JDK版本
- build:
- fileName:当前项目名称
- pluginManagement:项目中使用的插件版本
- scope
- test:编译、测试时生效,运行时无效
- compile:默认属性,编译、测试、运行时都生效
- provided:编译、测试、运行时生效,仅在当前容器中生效(部署到tomcat中不生效,适用于部署容器自带依赖的情况)
仓库
- 用于存放项目需要的jar包,实现多个项目共享
- 设置仓库位置
- \apache-maven-3.5.0\conf\settings.xml
- 设置下载路径
- 默认下载路径在国外
- 设置成阿里云路径
Eclipse设置
- 设置Maven路径
- 菜单->Window->Preferences->Maven->Installations-> 指定路径
- 设置仓库路径
- 菜单->Window->Preferences->Maven->User Settings->Global Settings
scope
添加包
- 给Maven项目添加jar
- pom.xml->OverView->Add->Enter GroupId...->包名(Scope要选择compile)
- 保存后运行
- 无法搜索到,重建本地仓库
- 菜单->Window->Show View->Other->Maven->Maven Repositories->Local Repository->Rebuild Index
示例
- taotao-parent:整个项目的父工程,用来做版本控制(pom)
- taotao-manager:用来做聚合工程(pom)
- taotao-manager-pojo(jar)
- taotao-manager-dao(jar)
- taotao-manager-service(jar)
- taotao-manager-web(war)
- taotao-rest(war)
- taotao-portal(war)
- taotao-common(jar)
参考
Maven中心库
https://mvnrepository.com/
Eclipse中导入Maven(Web)项目并配置运行
https://blog.csdn.net/itbiggod/article/details/79490219
Eclipse中导入Maven项目后没有run on server
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/84989742
https://blog.csdn.net/Mr_Yzko/article/details/78458873
eclipse使用maven教程
https://blog.csdn.net/learn_tech/article/details/82491412
eclipse.ini配置详解
https://blog.csdn.net/wqy_zyc/article/details/79661757
Downloading Apache Maven 3.6.3
http://maven.apache.org/download.cgi
Maven父子工程
https://www.cnblogs.com/chy18883701161/p/12297476.html
调用其它模块module的类方法
https://blog.csdn.net/big_data1/article/details/81218006
删除项目,关闭自动打开上一次项目
https://blog.csdn.net/weixin_41446182/article/details/95760734