【第六章:常用工具命令】第24节:常用命令 - Maven命令
大家好,上一小节中我们主要对Linux常用的命令做了介绍。本小节中,我们对Maven相关知识点以及其常用命令进行交流与学习。
Maven是什么?(掌握)
Maven 是一个跨平台的强大构建工具,可以实现自动化构建过程,从“清理、编译、测试、生成报告、打包和部署”都可以使用成熟的插件,通过简单的命令实现,避免了重复的构建过程。
Maven 不仅是一个优秀的项目构建工具,还是一个依赖管理工具,它提供了强大的中央仓库,能够帮助我们自动下载依赖。
Maven 提供了一个很好的解决方案。Maven 通过使用GroupId和ArtifactId来标识每一个构件(依赖),也就是通过一个坐标系准确地定位到了一个 Java 类库。Maven 的中央仓库几乎可以找到任何流行的开源类库,通过在项目 POM 文件中配置,都可以免费下载。
我们来总结下Maven的作用:
Maven 可以帮助我们自动构建项目,减少重复劳动;
Maven 可以帮助我们自动下载依赖,减少手工劳动。
接下来,我们先来创建一个Maven项目吧。
创建Maven项目:(使用IDEA来创建)
Maven项目创建之后,目录结构如下所示:
前面,我们说了Maven可以帮助我们自动下载依赖,,通过在pom.xml文件中配置所需的依赖,Maven可以自动帮助我们从仓库中获取依赖,并且下载导入项目中。如下所示:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ywq</groupId> <artifactId>niuke-maven</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> </dependency> </dependencies> </project>
然后,我们可以使用单元测试,运行之后,效果如下图所示:
看到这里,大家有没有豁然开朗的感觉?是否还能想起自己曾经“满大街”去寻找下载依赖,然后手动导入到项目中,最后还需要build一样,出现一个像奶瓶一样的包才算是完成了一个依赖包的引入的痛苦?
这就是Maven给我们带来的好处。当然了,聪明的你肯定会有疑问,当我们在pom中引入了依赖的坐标之后,Maven是如何去寻找依赖的?或者说是去哪里寻找并且下载依赖包的呢?别急,听我慢慢道来。
Maven的仓库
Maven 的仓库分为本地仓库和远程仓库,远程仓库又分为中央仓库、私(si)服及其它公共库。
- 本地仓库:就是 Maven 在本地(我们的计算机上)存储构件(依赖的 JAR 包等)的仓库,默认是在用户的.m2/repository/目录下。
- 远程仓库:分为中央仓库、私(si)服及其它公共库。用户是在和私(si)服打交道,包括上传和下载构件。当私(si)服满足不了我们的下载构件需求时,私(si)服会和中央仓库或者其余公共仓库交互,将用户需要的构件缓存在私(si)服仓库中。
什么是私(si)服?
私(si)服是一种特殊的远程仓库,是在局域网内的仓库服务,私(si)服代(dai)理广域网上的远程仓库,供局域网内的 Maven 用户使用。
什么是中央仓库?
Maven 提供了一个中央仓库,其地址为:http://repo.maven.apache.org/maven2 ,该仓库包含了绝大多数流行的开源 Java 构件,以及源码、作者信息、SCM 信息、许可证信息等。据不完全统计,每个月中央仓库大概会接受全世界 Java 程序员大概 1 亿次访问,其重要性不言而喻。
好了,了解了Maven仓库的概念,你依然不理解其为什么可以自动取下载依赖并且导入到项目中。那么,我们再来看下Maven的配置文件settings.xml文件吧。
settings.xml文件
当我们下载安装好 Maven 时,在其安装目录的 conf 下存在一个 settings.xml 的配置文件,这是一个全局的 Maven 配置文件,为了不影响这台计算机上的其他用户,一般选择将该文件copy到~/.m2/ 下边,作为一个用户层面的配置文件。
settings.xml 文件中主要包含以下的元素:
- localRepository:本地仓库的目录。默认是用户目录下面的 .m2/repository 目录。
- interactiveMode:表示是否使用交互模式,默认是 true;如果设为 false,那么当 Maven 需要用户进行输入的时候,它会使用一个默认值。
- offline:表示是否离线,默认是 false。这个属性表示在 Maven 进行项目编译和部署等操作时,是否允许 Maven 进行联网来下载信息等。
- mirrors:定义一系列的远程仓库的镜像,用于缓解远程仓库的压力。
- profiles:用于指定一系列的 profile。
- activeProfiles:指定当前正在活跃的 profile。
- servers:表示当需要连接到一个远程服务器的时候需要使用到的验证方式。
通过settings.xml,我们可以进行配置,比如仓库地址的配置,授权验证配置等,这里给出一个比较完整的settings.xml配置文件,以供大家学习参考使用。
<?xml version="1.0" encoding="UTF-8"?> <settings> <mirrors> <mirror>
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
<p> Java开发岗高频面试题全解析,专刊正文共计31节,已经全部更新完毕。专刊分9个模块来对Java岗位面试中的知识点进行解析,包括通用面试技能,Java基础,Java进阶,网络协议,常见框架以及算法,设计模式等。专刊串点成面的解析每个面试题背后的技术原理,由浅入深,循序渐进,力争让大家掌握面试题目的背后的技术原理,摒弃背题模式的陋习。 专刊详细信息,请查阅专刊大纲和开篇词的介绍。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>