| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> (Maven笔记)Maven生命周期插件及命令使用pom.xml -> 正文阅读 |
|
[人工智能](Maven笔记)Maven生命周期插件及命令使用pom.xml |
目录
1.maven生命周期? ? ? ? maven生命周期(项目构建的过程):对项目进行清理、编译、测试、报告、打包、安装、部署上传到私服的过程。
注意:执行以上命令必须在命令行进入pom.xml所在目录! 2.maven核心概念①POM:一个文件名称是pom.xml , pom翻译过来叫做项目对象模型,maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。 ②约定的目录结构:maven项目的目录和文件的位置都是规定的。 ③坐标:是一个唯一的字符串,用来表示资源的。 ④依赖管理:管理你的项目可以使用jar文件。 ⑤仓库管理:你的jar包资源存放的位置。 ⑥生命周期:maven工具构建项目的过程。 ⑦插件和目标:执行maven构建的时候用的工具是插件。 ⑧继承:一个 maven 项目可以继承另一个 maven 的依赖, 称为子项目父项目。 ⑨聚合:父类型的模块,不需要有源代码和资源文件,也就是说,没有 src/main/java 和 src/test/java目录。Maven会首先解析聚合模块的POM文件,分析要构建的模块,并通过各模块的依赖关系计算出模块的执行顺序,根据这个潜在的关系依次构建模块。 3.maven仓库? ? ? ? (1)什么是maven仓库? ????????maven仓库是存放东西的,存放maven下载的jar包和项目调用的jar包。 ? ? ? ? ? ? ? ? ——maven使用的插件(各种jar包) ? ? ? ? (2)仓库的分类
? ? ? ? ——中央仓库:最权威的,所有的开发人员都共享使用的一个集中的maven仓库。
? ? ? ? ——镜像中央仓库:中央仓库的备份,在各大洲,重要的城市都有镜像资源地址。 ? ? ? ? 如阿里云的maven镜像的中央仓库:https://maven.aliyun.com/mvn/guide
? ? ? ? (3)仓库的使用——maven仓库调用不需要人为参与的。 ????????开发人员获取jar资源(项目工程需要使用的jar,mysql驱动等资源)——>首先查找maven自定义本地仓库(本机电脑的文件夹目录)——>私服maven(公司组织局域网服务器)——>镜像中央仓库(aliyun、apache国内服务器)——>中央仓库(mvnrepository外国服务器) ? ? ? ? 说明:仓库使用顺序,本机(地)仓库没有的话,去私服查找,有的话就拷贝一份到本机(地)仓库。如果私服没有的话,就去镜像中央仓库查找,有的话,就拷贝分别拷贝一份到私服中央仓库和本机(地)仓库中。以此类推,直到外服中央仓库中查找,若外服中央仓库没有的话,说明开发人员需要调用的jar资源不存在,有的话就分别拷贝到各种级别的仓库中,供给开发人员离线调用开发资源,提高开发效率。 5.pom文件? ? ? ? pom.xml是maven的核心文件,是maven的灵魂。 ? ? ? ? 生成结构说明: ? ? ? ? (1)modelVersion:Maven模型的版本,对于Maven2和Maven3来说,它只能是4.0.0。
? ? ? ? (2)groupId:组织id,一般是公司域名的倒写。格式可以为: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??——域名倒写。例如com.baidu ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??——域名倒写+项目名。例如com.baidu.projectname
? ? ? ? (3)artifactId:项目名称,也是模块名称,对应groupId中项目中的子项目
? ? ? ? (4)version:项目版本号。如果项目还在开发中,是不稳定版本,通常在版本后带-SNAPSHOT,version使用三位数字标识,例如1.1.0。
? ? ? ? (5)gav:以上的groupId、artifactId、version三个元素合并在一起统称为项目坐标,项目坐标具有唯一性,称之为唯一值,在互联网中唯一标识一个项目的,在中央仓库中就是根据项目坐标的唯一值,在资源库中搜索下载相应的jar包。
? ? ? ? 例如,想要在中央仓库中获取mysql连接驱动,必须在pom.xml中声明mysql连接驱动在仓库中唯一性项目坐标搜索下载jar包。搜索地址:https://mvnrepository.com/,键入mysql关键字。
? ? ? ? (6)packaging:项目打包的类型,可以是jar、rar、ear、pom,web应用是war,?packaging可以不写,默认是jar。 ? ? ? ? (7)dependencies和dependency(依赖):项目中要使用的各种资源说明,比我的项目要使用mysql驱动,Maven的一个重要作用就是管理jar包,为了一个项目可以构建或运行,项目中不可避免的,会依赖很多其他的jar包,在 Maven中,这些jar就被称为依赖,使用标签dependency来配置。而这种依赖的配置正是通过坐标来定位的,由此我们也不难看出,maven把所有的jar包也都视为项目存在了。 ? ? ? ? 依赖也有自己的项目坐标,用作中央仓库唯一值标识。
? ? ? ? (8)properties:properties是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级。
? ? ? ? (9)build:表示与构建相关的配置,例如设置编译插件的jdk版本。 ? ? ? ? ? ? ? ? 例如,使用maven项目骨架快速创建java项目时,会自动生成一堆的maven生命周期的插件,都放在build中:
6.maven命令+插件之间的关联
7.单元测试junit????????单元测试:用的是junit,是一个专门测试的框架(工具)。 ????????maven借助单元测试,批量测试类中的大量方法是否符合预期的。 ????????(1)在pom.xml中加入依赖
????????(2)在maven项目中的src/test/java目录下,创建测试程序。 ????????????????推荐的创建类和方法的提示: ? ? ? ? ? ? ? ? ——测试类的名称是Test +你要测试的类名 ????????????????——测试的方法名称是:Test +方法名称 ? ? ? ? ? ? ? ? ——创建测试类:TestHelloMaven
? ? ? ? ? ? ? ??其中testAdd叫做测试方法,它的定义规则遵循以下4点: ? ? ? ? ? ? ? ? ——方法是public的,必须的。 ? ? ? ? ? ? ? ? ——方法没有返回值,,必须的 ? ? ? ? ? ? ? ? ——方法名称是自定义的,推荐是Test +方法名称 ? ? ? ? ? ? ? ? ——方法的上面加入@Test ????????(3)创建HelloMaven.java,如下:
????????(4)创建TestHelloMaven.java,如下:
? ? ? ? 到这里maven的junit单元测试类已经创建成功,下面结合maven常用命令(生命周期插件)一起使用,实践一下。? 8.使用maven命令及生命周期插件????????(1)maven的编译——mvn compile? ? ? ? ??????????????????maven命令编译之前:maven.txt随便创建的资源文件 ? ? ? ? ??????????????????maven使用命令编译后:mvn compile ? ? ? ? ??????????????????maven命令的mvn compile编译功能由两个插件完成,分别是:
? ? ? ? ??????????????????——maven-resources-plugin-2.6.jar:把src/main/resources/所有资源文 ????????????????????????件同时拷贝到mvn compile编译的target根目录下。 ? ? ? ? ??????????????????——maven-compiler-plugin-3.1.jar:编译src/main/所有java源程序,编译之后 ????????????????????????生成xxx.class字节码文件同时拷贝存放到mvn compile编译的target/classes/包 ????????????????????????名(com.zhangsong.maventest)目录下。 ????????(2)maven的清理——mvn clean? ? ? ? ??????????????????maven命令清理之前:target目录是mvn compile编译生成的目录,执行mvn ??????????????????????????clean,将会删除target目录(打包存放到本地仓库或本机仓库文件夹的jar包资源 ??????????????????????????不会被删除)。mvn命令的mvn clean清理功能由插件完成。
? ? ? ? ??????????????????删除target目录及其中存放所有同时拷贝的.class和资源文件。 ????????(3)maven的测试编译——mvn test-compile? ? ? ? ??????????????????由两个插件
? ? ? ? ??????????????????与mvn compile使用插件相同,区别是编译的文件不同,生成的.class和 ??????????????????????????resources存放目录不同。 ??????????????????????????首先,我们要明确为什么要测试编译? ??????????????????????????在java语言中,编译时和运行时是不同时期独立进行的。因此这里,通过maven ??????????????????????????命令测试编译+junit单元测试进行编译时期测试程序。搞清楚这一点,咱们继续。 ??????????????????????????而上面4部分(单元测试junit)中测试类TestHelloMaven.java已经创建,而它只 ??????????????????????????是.java源程序,要编译成.class字节码文件,才能测试程序。 测试程序编译后同时拷贝到target/test-classes/包名(com.zhangsong.maventest)目录中 ????????(4)maven的测试:mvn test??????????????????????????由一个插件完成测试程序的功能。
??????????????????????????根据maven生命周期特性,当mvn test命令执行时,会再次执行mvn compile命 ??????????????????????????令以及mvn test-compile命令,就是再次从生命周期头部开始执行。因此,当我 ??????????????????????????们使用mvn test时,其实已经自动编译或拷贝src/main/所有资源和src/test/所有 ??????????????????????????资源到target对应的classes目录下或test-classes目录下。 ??????????????????????????使用mvn test不论 BUILD SUCCESS(构建成功)?或者 BUILD FAILED(构建 ??????????????????????????失败)都会在target目录中生成一个测试报告的目录target/surefire-reports,用 ??????????????????????????作记录mvn ?test测试的结果信息测试报告文件分别用一个.txt文件和一个.xml文件 ??????????????????????????记录。记录信息有:
??????????????????????????如: ????????(5)maven的打包:mvn package??????????????????????????把编译mvn compile、编译测试mvn test-compile、测试mvn test、并且按照 ??????????????????????????pom.xml配置把主程序打包生成jar包或者war包。 ??????????????????????????maven命令mvn package由一个插件完成打包。
??????????????????????????生成jar包名称由项目坐标的artifactId-version.jar来统一规范命名,这是maven ??????????????????????????默认规范,不建议更改。如:HelloMaven-1.0-SNAPSHOT.jar。
?? ? ? ? ? ? ? ? ? ? ? ? ? 对mvn package打包生成HelloMaven-1.0-SNAPSHOT.jar文件说明 ?? ? ? ? ? ? ? ? ? ? ? ? ? 目录结构:仅打包src/main中的所以资源(java目录+resources目录)和 ?? ? ? ? ? ? ? ? ? ? ? ? ? pom.xml等版本参数信息,其它目录资源不打包。
?? ? ? ? ? ? ? ? ? ? ? ? ? ——HelloMaven.class对应src/main/java/所有源代码 ??? ? ? ? ? ? ? ? ? ? ? ? ? ——pom.properties文件:打包时的时间和项目坐标的三个参数,内容如下:
??? ? ? ? ? ? ? ? ? ? ? ? ? ——pom.xml文件:内容与项目工程pom.xml一样。
??? ? ? ? ? ? ? ? ? ? ? ? ? ——MANIFEST.MF目录:打包时的清单版本、和存档版本、maven版本、jdk版 ??? ? ? ? ? ? ? ? ? ? ? ? ? 本、操作打包的账户名【C盘User名称】
??? ? ? ? ? ? ? ? ? ? ? ? ? ——maven.txt文件:拷贝src/main/resources/所有资源文件 ?????????(6)maven的安装:mvn install??? ? ? ? ? ? ? ? ? ? ? ? ? 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中。方便某 ??? ? ? ? ? ? ? ? ? ? ? ? ? 些重要项目离线保存或某些组织共享资源。 ??? ? ? ? ? ? ? ? ? ? ? ? ? 执行mvn install,也要把compile、test-compile、test、package四个生命周 ????????????????????????????期重复执行一次,每个周期命令对应的功能也会自动执行。 ???? ? ? ? ? ? ? ? ? ? ? ? ? 安装在本地仓库中的jar包位置和名称如何确定呢? ???? ? ? ? ? ? ? ? ? ? ? ? ? ——位置是路径,路径取决去项目坐标3个参数的拼接。拼接时,遇到“.”就分 ???? ? ? ? ? ? ? ? ? ? ? ? ? 割成文件夹。\com\zhangsong\maventest\HelloMaven\1.0-SNAPSHOT ????? ? ? ? ? ? ? ? ? ? ? ? ? ——名称是artifactId-version.jar(固定规范) ???? ? ? ? ? ? ? ? ? ? ? ? ? 安装在本地仓库中的jar如何引用呢? ????? ? ? ? ? ? ? ? ? ? ? ? ? ——在非当前项目的pom.xml中的依赖处,引入该jar包项目坐标即可。
?????????(7)maven的安装:mvn deploy?? ? ? ? ? ? ? ? ? ? ? ? ? ?涉及到服务器搭建和web配置,这里就不介绍了,因为俺也不会~~~ 9.总结仅自己学习记录,如有错误,敬请谅解~,谢谢~~~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 9:47:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |