1 How to learn Project management tools官网传送门
官方操作手册
jar包难以寻找jar包依赖的问题jar包版本冲突问题jar不方便管理项目结构五花八门项目的生命周期控制方式五花八门
2 What is maven 2.1 Maven的形成Maven最初是为了简化 一个用Jakarta Turbine框架开发的Web项目中的构建过程的一个工具。提到项目构建,在以前比较火热的是Apache Ant这个构建脚本工具;Ant火热代表了当时它很好用,但有两个致命缺点:
有几个项目,每个项目都有自己的 Ant 构建文件,都略有不同无法管理依赖 为了解决上述需求,Maven就这样诞生了:
在具备Ant功能的基础上,打造一种可以用于构建和管理任何基于 Java 的项目的工具,提供:
标准方法(对象模型POM)对项目组成的清晰定义(结构)一种发布项目信息(部署)的简单方法一种在多个项目之间共享 JAR (中央仓库)的方法 2.2 Apache Ant对比Apache Maven Project
**Apache Ant:**软件构建工具
**Apache Maven Project:**软件项目管理和理解工具
使用Project Object Model来对软件项目管理内置了更多的隐式规则,使得构建文件更加简单内置依赖管理和Repository来实现依赖的管理和统一存储内置了软件构建的生命周期 2.3 Maven的目标
Maven 的主要目标是让开发人员在最短的时间内了解任何基于 Java 的项目。为了实现这个目标,Maven 处理了几个关注的领域:
简化构建过程提供统一的构建系统提供优质项目信息鼓励更好的开发实践 2.4 总结
3 Download and Install 3.1 DownloadMaven是一个管Java项目的管理工具,主要管构建、打包、部署(全生命周期的管理)Maven通过对象模型-Project Object Model(pom)来对软件项目管理Maven的项目结构有一些显示和隐式规则
官网下载页面传送门
3.2 Install直接将tar.gz的文件夹解压到你指定的目录(想放哪放哪,别用中文命名)
配置环境变量:MAVEN_HOME、PATH
MAVEN_HOME:maven存放路径 PATH:%MAVEN_HOME%/bin
打开命令窗口测试是否配置成功:mvn -v
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739) Maven home: /Users/nan/DevelopmentEnvironment/apache-maven-3.8.3 Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
配置全局&自定义IDEA开发工具
打开IDEA后不要进入项目,然后打开preferences->Build->Build Tools->Maven
**依赖:**你的项目引入了那些jar包,无论是开源的还是不开源的,这些jar就是你项目的依赖,你的项目依赖于他们才能用,比如jdbc、fastjson、jetty、slf4j等
**原来依赖咋引入:**最初这些东西需要我们自己去网上找,然后下载下来、复制到项目中然后构建到项目当中去
**现在Maven咋引入依赖:**Maven的依赖管理相当于它做了一个公共平台,jar包提供商将下载地址托管到这个平台,使用者直接在一个统一的地方去下载各式各样的依赖,找依赖、管依赖等繁琐步骤maven给你干了,你只管确定自己要用谁家的哪个东西、哪个版本,直接通过maven提供的坐标地址下揍中咧,坐标格式如下:
总结com.talent.core Anyonelse-core ${anyonelse_version} com.talent.core Anyonelse-core ${anyonelse_version}
4.2 多模块构建原来你跑个一个手续要去1W个地方用时10年,现在一个手机上的APP1个小时就能把事全干了原来要在项目里建一个libraries,然后把四处淘换来的jar粘进去,再右键导入自从有了Maven!妈妈再也不用担心我找不着jar包以及项目存一堆jar而导致项目过大
商业项目的业务往往多而咋,这个时候我们在架构层面就可能会按controller、model、services、impl、mapper、来进行模块级分层;或者根据业务分类进行模块切分,管走道的一个模块、睡觉的一个模块、拉屎的一个模块
Maven同样支持这种多模块结构,只需定义一组聚合POM(对象模型),并在配置中声明爹跟儿子之间的关系就行,这个时候儿子自动继承他爹的所有配置项;声明爹跟儿子关系的配置这么写:
总结PRODUCT-LES PRODUCT-LES1 PRODUCT-LES2 ...
4.3 统一项目结构
标签清晰的声明了父子关系,儿子再也不用担心不知道上哪要钱去了
开发工具是有好多种的,如eclipse、MyEclipse、spring、idea…;不同开发工具具有一些自有的目录结构以及一些文件、配置等,所以之前没有用maven的时候,当一个项目是用eclipse开发的时候再想用别的工具运行它就会出现各式各样、千奇百怪的问题,难受的一批,所以maven限制了被他托管的项目的结构;Maven项目结构如下:
my-app -- 项目名 |-- src -- 资源总目录 | |-- main -- 和src基本作用差不多 | | `-- java | | `-- com -- 包路径 节点1 | | `-- MyCompany -- 包路径 节点2 | | `-- app -- 包路径 节点3 | | `-- controller -- 接口 | | `-- pojo -- 实体类 | | `-- services -- 接口类 | | `-- services -- 接口类 | | `-- mapper -- 持久层 | | `-- App.java -- 启动类 | | `-- resource -- 放配置文件的 | | `-- webapp -- 这是前端部分 | | `-- WEB-INF -- WEB-INF是Java的WEB应用的安全目录 | `-- test -- 测试用例,干掉 | `-- java | `-- com | `-- mycompany | `-- app | `-- AppTest.java `-- pom.xml -- 对象模型配置文件4.4 建一个maven项目 5 搭建私服Nexus 5.1 nexus介绍
5.2 为什么使用Nexus仅仅是私服的一种,私服是一种同中央仓库一样的远程仓库,只不过它是由自己搭建的远程仓库
用于存放一些无法从外部仓库下载的构件,例如内部的项目还能部署到私服上,以便供其他依赖项目使用为了节省带宽和时间,在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库
节省外网带宽建立本地内部公用仓库 5.3 安装&卸载
版本/收费/免费:Nexus Repository Manager 仓库管理有2个版本,专业版和oss版,oss版是免费的,专业版是收费的,我们使用oss版。
Nexus依赖Java环境
官网传送门
官方下载传送门
Docker Hub
官方安装文档
安装将下载好的tar.gz的包解压到指定目录Windows系统需要配置环境变量
Path:nexus/bin ./nexus start启动
startstoprestartforce-reload 访问http://localhost:8081验证是否启动是否成功
默认用户名和密码存放文件的地址:/Users/nan/Downloads/latest-unix/sonatype-work/nexus3/admin.passwordroot:adminpwd:admin.password文件内 根据提示修改默认密码
5.4 使用详解仓库分类 hosted(宿主仓库)保存中央仓库里没有的资源(jar)
自己开发的包第三方但是不开源的包 proxy(代理仓库)
代理远程仓库,通过nuxus访问其他公共仓库,比如maven官方、jboos… 仓库组(group)
将多个仓库组成一组,简化配置仓库组不能保存资源,属于设计性仓库 添加宿主仓库
仓库分为release版及snapshot版
向仓库组中添加自己创建的仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tzz995qh-1644558461948)(/Users/nan/Library/Application Support/typora-user-images/image-20211101181804313.png)]
手动上传包 如需链接私服下载配置本地Maven的配置文件
添加server添加mirror具体配置如下配置
资源自动上传私服nexus-zhgc aaa bbb nexus-zhgc central http://localhost:8081/repository/maven-public/ default_profile zhanglonghao_repo zhanglonghao_repo true never warn true always warn http://maven.zhanglonghao.work:8081/nexus/content/groups/public default maven-net-cn Maven China Mirror http://maven.zhanglonghao.work:8081/nexus/content/groups/public true true default_profile
上传资源时需要提供
自己项目打好的包要传到私服中那个宿主仓库中在对应的pom中添加如下配置
6 常见报错解决方案zhgc-release http://10.10.1.104:8931/repository/zhgc-release/ zhgc-snapshots http://10.10.1.104:8931/repository/zhgc-snapshots/



