持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在掘金上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。 本文主要讲解maven知识,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬 ✨✨✨个人主页:JinHuan
💎Maven的核心概念
🎯1 Maven的目录结构
Maven默认约定了一套目录结构,在通过Maven创建了项目以后,项目的目录结构就是以这套目录结构作为模板创建的。虽然Maven提供了很多的模板,但是基本的目录结构都是固定的。
Maven约定的目录结构:myFirstMavenProject
|-- src
|-- |-- main
|-- |-- |-- java —— 项目的源代码所在的目录
com.jinhuan.entity
com.jinhuan.dao
...
|-- |-- |-- resources —— 项目的资源文件所在的目录
|-- |-- |-- webapp —— 如果是web项目,则该目录是web应用源代码所在的目录 |-- |-- |-- |--WEB-INF
|-- |-- |-- |-- |-- web.xml
|-- |-- test
|-- |-- |-- java ——测试代码所在的目录,如JUnit测试类
com.jinhaun.dao.test
|-- |-- |-- resources ——测试相关的资源文件所在的目
|-- target —— 项目构建的输出文件,如.class、.jar、.war文件(不需要创建,会自动生成)
|-- pom.xml ——Maven项目核心配置文件,项目的描述文件
🎯2 Maven的仓库
在 Maven中可以将仓库理解位一个位置,一个专门存放项目中依赖的第三方库的位置。
🍎maven仓库的分类
maven的仓库可以分为本地仓库和远程仓库。
📈本地仓库
本地仓库相当于一个缓存,在电脑上是一个文件夹,我们可以设置这个文件夹的路径(具体怎么设置会在下面的配置体现),工程第一次需要某种jar包时,会从远程仓库(互联网)下载并保存到本地仓库中(在程序员的电脑上),当第二次使用时,不需要去远程仓库下载,会先去本地仓库中找,如果找不到才会去远程仓库上下载。 默认情况下,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。
📈远程仓库
远程仓库中分为中央仓库和私服两类。
🥝中央仓库
中央仓库中的jar包由专业团队(Maven团队)维护,中央仓库中存放了全世界大多数流行的开源软件的jar包,是Maven默认的远程仓库。 要浏览中央仓库的内容,Maven 社区提供了一个 URL:search.Maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。
🥝私服
私服是另一种特殊的远程仓库,为了节省带宽和时间,应该在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。内部的项目还能部署到私服上供其他项目使用。除了中央仓库和私服,还有很多其他公开的远程仓库,常见的有java.net Maven库(download.java.net/maven/2/)和jboss Maven库(repository.jboss.com/maven2/)等
私服扩充
问题:项目组编写了一个通用的工具类,其它项目组将类拷贝过去使用,当工具类修改bug后通过邮件发送给各各项目组,这种分发机制不规范可能导致工具类版本不统一。
解决方案:项目组将写的工具类通过Maven构建,打成jar,将jar包发布到公司的Maven仓库中(私服),公司其它项目通过Maven依赖管理从仓库自动下载jar包。
公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的Maven远程仓库,每个员工的电脑上安装Maven软件并且连接私服服务器,员工将自己开发的项目打成jar并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。
私服还充当一个代理服务器,当私服上没有jar包会从互联网中央仓库自动下载,如下图:
私服作用: 1、将自己的工程打包jar发布到私服 2、从私服下载jar包到自己的工程中
🌈2.2 配置本地仓库
当你运行 Maven 命令,Maven 将下载依赖的文件到你指定的路径(即本地仓库)中。 本地仓库就是你电脑中的任何一个文件夹,建议是全英文路径 在Maven的安装路径下的conf文件中的setting.xml文件下添加如下内容:
<!--配置本地仓库-->
<localRepository>D:\repository</localRepository>
🌈2.3 配置远程仓库镜像
Maven默认的远程仓库是Maven团队维护的中央仓库,由于网络原因,去中央仓库下载jar包需要到国外的网站,不太便捷,速度慢,于是我们可以选择把国内的阿里云的Maven仓库作为中央仓库镜像。 修改 Maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:
<!-- 配置阿里云镜像 -->
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
<!-- 其中各个标签的含义是:
id:当前镜像的唯一标识
mirrorOf:将哪个远程仓库当做中央仓库镜像,中央仓库的id是central,所以将阿里云的Maven仓库设置为中央仓库镜像时,其值必须设置为central
name:为当前的中央仓库镜像起一个名字,便于开发者阅读
url:阿里云Maven仓库的地址
-->