Maven项目构建工具
目录
1.Maven介绍
1.1Maven是什么
1.2为什么要使用maven
2.Maven安装
2.1下载Maven:
2.2解压并配置
2.3编辑Maven环境变量
2.3.1检查JDK环境变量
2.3.2 配置maven_home环境变量
3.Maven配置
3.1仓库类型
3.2本地仓库配置
3.3远程镜像配置
4.Maven常用命令
4.1 通过命令来构建项目
4.2 对项目进行打包
4.3 将项目安装到本地仓库
1.Maven介绍
1.1Maven是什么
** Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。**
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs
知识点总结: ** Maven项目对象模型(POM) 主要管理项目的构建,报告和文档的项目管理工具软件。**
1.2为什么要使用maven
由于 Java 的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以 jar包的形式出现的,例如 Spring,SpringMVC、MyBatis、数据库驱动,等等,都是以 jar包的形式出现的,jar包之间会有关联,在使用一个依赖之前,还需要确定这个依赖所依赖的其他依赖,所以,当项目比较大的时候,依赖管理会变得非常麻烦臃肿,这是 Maven 解决的第一个问题。
Maven 还可以处理多模块项目。简单的项目,单模块分包处理即可,如果项目比较复杂,要做成多模块项目,例如一个电商项目有订单模块、会员模块、商品模块、支付模块...,一般来说,多模块项目,每一个模块无法独立运行,要多个模块合在一起,项目才可以运行,这个时候,借助 Maven 工具,可以实现项目的一键打包。
Maven 之前,我们更多的是使用Ant的项目构建工具,Ant 有一个特点,每次都得写,每次都写的差不多,配置也臃肿。所以,后来搞出来Maven。Maven就是最先进的版本构建工具吗?不是的,只不过,目前在 Java 领域 Maven 使用比较多。除了 Maven,还有 Gradle。
2.Maven安装
Maven是 Java项目,因此必须先安装 JDK。
2.1下载Maven:
下载地址:http://maven.apache.org/download.cgi
2.2解压并配置
bin: 该目录包含了mvn运行的脚本,分别为mvn、mvn.bat、mvnDebug、mvnDebug.bat和m2.conf,这些脚本用来配置 Java 命令,准备 CLASSPATH 和相关的 Java 系统属性,然后执行 Java 命令
boot: 该目录只包含一个文件,以maven 3.0为例,该文件为plexus-classworlds-2.2.3.jar。plexus-classworlds是一个类加载器框架,相对于默认的 Java 类加载器,它提供了更丰富的语法以方便配置,Maven 使用该框架加载自己的类库。
conf: 该目录包含了要给非常重要的文件settings.xml。直接修改该文件,就能再机器上全局地定制 Maven 的行为。一般情况下,我们更偏向于复制该文件至/.m2/目录下(表示用户目录),然后修改该文件,在用户范围定制 Maven 的行为。
lib: 该目录包含了所有 Maven 运行时需要的 Java 类库,Maven 本身是分模块开发的,因此用户能看到诸如maven-core-3.0.jar和maven-model-3.0.jar之类的文件。
LICENSE: 该文件记录了 Maven 使用的软件许可证
NOTICE:该文件记录了 Maven 包含的第三方软件。
README.txt: 该文件则包含了 Maven 的简要介绍,包括安装需求以及如何安装的简要指令等。
2.3编辑Maven环境变量
2.3.1检查JDK环境变量
1.配置Java_Home环境变量
2.通过DOS命令窗口 检查配置是否有效
2.3.2 配置maven_home环境变量
1.配置MAVEN_HOME
2.配置环境变量
3.检查Maven是否有效 重启DOS窗口
3.Maven配置
实际上,没有特殊需求的话,安装好之后直接就可以用了。一般来说,还是需要稍微配置一下,比如中央仓库的问题。Maven默认使用自己的中央仓库,使用起来网速比较慢,这个时候,可以通过修改配置文件,将仓库改成国内的镜像仓库,国内仓库使用较多的是阿里巴巴的仓库。
3.1仓库类型
仓库类型 说明 | |
---|---|
本地仓库 |
就是你自己电脑上的仓库,每个人电脑上都有一个仓库,默认位置在当前用户名\.m2\repository |
私服仓库 |
一般来说是公司内部搭建的 Maven私服,处于局域网中,访问速度较快,这个仓库中存放的 jar一般就是公司内部自己开发的 jar |
中央仓库 |
由 Apache团队来维护,包含了大部分的 jar,早期不包含Oracle数据库驱动,从 2019年 8月开始,包含了 Oracle 驱动 |
现在存了三个仓库,那么jar包如何查找呢?
3.2本地仓库配置
本地仓库默认位置在当前用户名\.m2\repository
,这个位置可以自定义,但是不建议大家自定义这个地址,有几个原因:
- 虽然所有的本地的 jar都放在这个仓库中,但是并不会占用很大的空间。
- 默认的位置比较隐蔽,不容易碰到
技术上来说,当然是可以自定义本地仓库位置的,在 conf/settings.xml中自定义本地仓库位置:
<localRepository>f:\My-Maven-Repository</localRepository>
3.3远程镜像配置
由于默认的中央仓库下载较慢,因此,也可以将远程仓库地址改为阿里巴巴的镜像仓库地址:
<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
这段配置,加在 settings.xml中的 mirrors节点中:
4.Maven常用命令
Maven中有一些常见的命令,如果使用Eclipse需要手动敲命令,如果使用 IDEA的话,可以不用命令,直接点点点就可以了
常用命令 中文含义 说明 |
||
mvn clean |
清理 |
这个命令可以用来清理已经编译好的文件 |
mvn compile |
编译 |
将 Java代码编译成Class文件 |
mvn test |
测试 |
项目测试 |
mvn package |
打包 |
根据用户的配置,将项目打成 jar包或者 war包 |
mvn install |
安装/部署 |
手动向本地仓库安装一个 jar |
mvn deploy |
上传 |
将 jar上传到私服 |
这里需要注意的是,这些命令都不是独立运行的,它有一个顺序。举个简单例子:
我想将jar上传到私服,那么就要构建jar,就需要执行package命令,要打包,当然也需要测试,那就要走mvn test 命令,要测试就要先编译.............................. ,因此,最终所有的命令都会执行一遍。不过,开发者也可以手动配置不执行某一个命令,这就是跳过。一般来说,除了测试,其他步骤都不建议跳过。
当然,如果开发者使用了 IDEA,这些命令不用手动敲,点一下就行:
1.validate 验证工程是否正确,所有需要的资源是否可用。 命令: mvn validate
2.compile 将文件由.java文件编译为.class文件 动态生成target文件目录 命令: mvn compile
3.clean 清空target文件目录 命令: mvn clean
4.test 执行测试方法是否正确 命令: mvn test
5.package 将项目的target文件打包为jar包文件 命令: mvn package
6.verify 对集成测试的结果进行检查,以保证质量达标 命令: mvn verify
7.install 安装打包的项目到本地仓库,以供其他项目使用 命令: mvn install
8.site 项目站点文档创建的处理 命令: mvn site
9.deploy 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 (了解 用不到)
4.1 通过命令来构建项目
可以直接通过命令来构建一个 Maven项目,不过在实际开发中,一般使用Eclipse或者 IDEA就可以直接创建 Maven项目了。创建命令:
mvn archetype:generate
需要注意:第一次使用该命令,会先下载构建项目所需的jar包
项目创建成功后,就两个文件:
说明对一个任何一个项目而言,最最核心的就是这两个。
pom.xml中,则定义了所有的项目配置
4.2 对项目进行打包
接下来,我们通过mvn package
命令可以将刚刚创建的项目打成一个 jar包。
在打包之前,需要配置JDK的版本至少为 7以上,因此,我们还需要手动修改一下pom.xml 文件,即添加如下配置:
<!-- java版本 --> <profile><id>jdk-11</id><activation><activeByDefault>true</activeByDefault><jdk>11</jdk></activation><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><maven.compiler.compilerVersion>11</maven.compiler.compilerVersion></properties></profile>
执行打包命令,注意执行所有命令时,命令行要定位到 pom.xml文件所在的目录,看到如下提示,表示项目打包成功。
4.3 将项目安装到本地仓库
如果需要将项目安装到本地仓库,可以直接执行 mvn install
命令,注意,mvn install
命令会包含上面的 mvn package
过程。
安装到本地仓库之后,这个时候,点开自己的本地仓库,就可以看到相关的 jar了。
Maven项目构建工具相关推荐
- Java项目构建工具Gradle是否可以完全替代Maven?
前言 在Java项目的开发中,需要引入自动化构建工具来帮助我们管理项目的外部依赖包.项目编译.打包等工作.Gradle和Maven是Java世界中两个重要的自动化构建工具,在项目中我们在两者之间如何选 ...
- Java技术:项目构建工具Maven最佳替代者gradle介绍
Maven作为一款非常流行的项目构建工具.基本上是每个Java程序员必备的工具,当然Maven有一些地方不足之处: 1. Maven的配置文件是XML格式的,如果你的项目工程依赖的包很多,那么XML文 ...
- jenkins pipeline、用户权限管理、插件下载地址更改、凭证管理、自由风格项目构建、maven项目构建、常用的构建触发器、邮件发送、SonarQube代码审查
CI持续集成流程 pipeline jenkins安装pipeline插件: 简单使用: 查看流水线语法: 片段生成器: 2.0以后推荐使用声明式语法:右侧下拉框是一些步骤,都可以自动生成 Decla ...
- 不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中制作 JAR 包
不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中制作 JAR 包 说明 步骤 说明 本文的 原始 Java 程序,指的是不使用项目构建工具(如 Maven)而建立起的一 ...
- 不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中整合 Tomcat 部署 Web 应用
不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中整合 Tomcat 部署 Web 应用 我们知道,部署 Web 应用可以直接将 Web 应用的文件夹置于 Tomca ...
- Java初级项目学习第一讲:Maven项目构建
Maven项目构建 一.什么是Maven Maven这个单词来自于意第绪语(犹太语),意为知识的积累.Apache Maven是一个(特别是Java编程)项目管理及自动构建工具,由Apache软件基金 ...
- Maven项目构建(一):什么是Maven?
Maven项目构建(一):什么是Maven? 作者:杨景文(javen666.com) Maven是一个项目构建和项目管理的工具. 视频教程:https://www.bilibili.com/vi ...
- Maven学习总结(2)——Maven项目构建过程练习
Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建 ...
- Maven学习总结(二)——Maven项目构建过程练习
2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验 ...
最新文章
- 【old】mapX距离工具源码,delphi7+mapx5.0
- 如何用原生js替换字符串中的某个字符(或字符串)为指定的字符串?
- PE关于导入表(IAT)知识复习
- 运算符重载(c++细节篇二)
- CodeForces 1191A---Tokitsukaze and Enhancement
- 盐城计算机中专学校,盐城市有哪些中专学校?
- 使用Windows Server 2003搭建一个asp+access网站
- python3源代码分析_分析一点python源代码
- Python迭代器的生成与学习笔记
- Java反射----获取Class类实例的4种方式
- 微信小程序商城毕业设计毕设作品(8)毕业设计论文
- 相关系数excel_数学建模笔记——相关系数
- 如何把NDI|HX2视频源通过高清解码器进行解码?
- 苹果计算机的优势,苹果笔记本的优缺点详细分析
- java poco_DTO与POCO
- 华为大数据研发第3轮面试
- 70句计算机英语,70句成人英语日常口语大全
- html中js计算百钱百鸡,JS经典案例之百钱百鸡
- Java开发为何深入人心 ?我来带你解开 Spring、IoC、DI 的秘密~
- 新支持APP 公众号聊天在线客服程序源码
热门文章
- 快速发展的低压电力线载波技术及其应用展望
- 元宇宙:区块链时代的新名字
- 免费注册微软Windows Live企业邮箱的方法详解
- 【SolidWorks插件】 凯元工具(KYTool)
- Real-time noise-aware tone mapping阅读笔记
- python识别验证码
- Cisco3850交换机设置web GUI访问
- 以太大亨 以太坊上的区块链模拟经营类游戏
- 输出教学日历表c语言的思路,20182019学年第二学期教学日历及教学环节表(一).pdf...
- BUUCTF msic 专题(73)john-in-the-middle