Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SSH深度历险(四) Maven初步学�

SSH深度历险(四) Maven初步学�

作者头像
全栈程序员站长
发布于 2022-07-09 02:35:28
发布于 2022-07-09 02:35:28
28500
代码可运行
举报
运行总次数:0
代码可运行

这几天接触这个词,非常多遍了,仅仅是浅显的体会到它在GXPT中的优点,功能之强大,又通过网络查询了资料进一步的认识学习了,和大家分享。

Maven是基于项目对象模型(POM),能够通过一小段描写叙述信息来管理项目的构建,报告和文档的软件项目管理工具

在gxpt中的体现

1. 父子关系

一个多模块项目通过一个父POM 引用一个或多个子模块来定义。

a. 在父文件夹中分别创建子项目

b. 父项目,通过下面配置,将子项目关联:

例如以下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span style="font-size:18px;"><span style="font-size:18px;"><modules>

		<module>../gxpt_entity_uas</module> 
		<module>../gxpt_common_tool</module> 
		<module>../gxpt_common_eao_impl</module> 
		<module>../gxpt_mgr_uas_fee</module> 
		<module>../gxpt_mgr_uas_fee_impl</module> 
		<module>../gxpt_web_uas_fee</module> 
		<module>../gxpt_common_eao</module> 
	</modules></span></span>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span style="font-size:18px;"><span style="font-size:18px;"><packaging>pom</packaging></span></span>

当中:在modules元素中,每一个modules 元素相应了一个 父文件夹下的子文件夹。Maven会去这些子文件夹中寻找pom.xml 文件,而且在构建mydemo时会将这些子模块包括到要构建的项目中。

另外,通过配置<packaging>pom</packaging> 表示这个父项目不像之前的项目那样创建一个JAR 或者一个WAR,它不过一个引用其他Maven 项目的POM。pom.xml 中下一部分列出了项目的子模块。

c. 在子项目的POM中加入�父项目关联:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<span style="font-size:18px;"><span style="font-size:18px;"><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>
	<parent>
		<groupId>com.tgb</groupId>
		<artifactId>gxpt</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<relativePath>../gxpt/pom.xml</relativePath>
	</parent></span></span>

2. 依赖关系

假设项目间存在依赖关系,如项目A依赖项目B,则须要在项目A的pom添加�了对B的依赖节点<dependency>,表示A项目中须要B的jar包。

Maven十分完好的生命周期模型(lifecycle)

Maven强大的一个重要的原因是它有一个十分完好的生命周期模型(lifecycle),这个生命周期能够从双方面来理解,第一,顾名思义,执行Maven的每一个步骤都由它来定义的,这样的提前定义的默认行为使得我们使用Maven变得简单,相比而言,Ant的每一个步骤都要你手工去定义。第二,这个模型是一种标准,在不同的项目中,使用Maven的接口是一样的,这样就不用去细致理解每一个项目的构建了,普通情况下,mvn clean install 这种命令是通用的。我想,一定是吸收了很多项目的经验,Maven才干定义出如此完好的模型。

Maven有三套相互独立的生命周期,请注意这里说的是“三套”,并且“相互独立”,刚開始学习的人easy将Maven的生命周期看成一个总体,事实上不然。这三套生命周期各自是:

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle 构建的核心部分,编译,測试,打包,部署等等。
  • Site Lifecycle 生成项目报告,网站,公布网站。

知道了每套生命周期的大概用途和相互关系以后,来逐个具体看一下每套生命周期,Clean和Site相对照较简单,先解释一下。

每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会相应于一个特定的阶段。比方,执行mvn clean,这个的clean是Clean生命周期的一个阶段。有点绕?要知道有Clean生命周期,也有clean阶段。

Clean生命周期一共包括了三个阶段:

  • pre-clean 运行一些须要在clean之前完毕的工作
  • clean 移除全部上一次构建生成的文件
  • post-clean 运行一些须要在clean之后立马完毕的工作

mvn clean中的clean就是上面的clean,在一个生命周期中,执行某个阶段的时候,它之前的全部阶段都会被执行,也就是说,mvn clean 等同于mvn pre-clean clean,假设我们执行mvn post-clean,那么 pre-clean,clean 都会被执行。这是Maven非常重要的一个规则,能够大大简化命令行的输入。

以下看一下Site生命周期的各个阶段:

  • pre-site 运行一些须要在生成网站文档之前完毕的工作
  • site 生成项目的网站文档
  • post-site 运行一些须要在生成网站文档之后完毕的工作,而且为部署做准备
  • site-deploy 将生成的网站文档部署到特定的server上

这里经经常使用到的是site阶段和site-deploy阶段,用以生成和公布Maven网站,这但是Maven相当强大的功能,Manager比較喜欢,文档及统计数据自己主动生成,非常好看。

最后,来看一下Maven的最重要的Default生命周期,绝大部分工作都发生在这个生命周期中,这里,我仅仅解释一些比較重要和经常使用的阶段:

  • validate
  • generate-sources
  • process-sources
  • generate-resources
  • process-resources 复制并处理资源文件,至目标文件夹,准备打包。
  • compile 编译项目的源码。
  • process-classes
  • generate-test-sources
  • process-test-sources
  • generate-test-resources
  • process-test-resources 复制并处理资源文件,至目标測试文件夹。
  • test-compile 编译測试源码。
  • process-test-classes
  • test 使用合适的单元測试框架执行測试。这些測试代码不会被打包或部署。
  • prepare-package
  • package 接受编译好的代码,打包成可公布的格式,如 JAR 。
  • pre-integration-test
  • integration-test
  • post-integration-test
  • verify
  • install 将包安装至本地仓库,以让其他项目依赖。
  • deploy 将终于的包拷贝到远程的仓库,以让其他开发者与项目共享。

基本上,依据名称我们就能猜出每一个阶段的用途,关于其他阶段的解释,请參考 http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

记住,执行不论什么一个阶段的时候,它前面的全部阶段都会被执行,这也就是为什么我们执行mvn install的时候,代码会被编译,測试,打包。

此外,Maven的插件机制是全然依赖Maven的生命周期的,因此理解生命周期至关重要,在之后的文章里,我将会进一步解释Maven的插件机制。

总结

刚刚接触,还需在项目中,逐步深入的理解,站在巨人的肩膀上学习,成长还是比較快的;知识的学习都是通过对照,在gxpt中非常多内容都是对照NET的知识学习,理解的也深刻、效果不错;抽象的能力的培养尤其重要,看着师哥们抽象的底层,处处体现着抽象带来的软件复用的高效,老师常常也在谈,抽象不要仅仅说,更要我们要不断的运用到自己的实际项目中,TO DO,TO DO!!!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119226.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Maven概念梳理 原
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的 软件项目管理工具。
wuweixiang
2018/08/14
4570
Maven概念梳理
                                                                            原
Maven第六讲 生命周期详解 高手必备!
他们的groupId和version都是一样的,程序员面对与重复的代码,需要提取,如果是java代码中,我们可以将同样的代码或者变量值,提取成方法或者变量,做到重用,方便维护。
易兮科技
2020/09/27
4550
Maven第六讲 生命周期详解 高手必备!
Maven生命周期详解
Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解,第一,顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我们使用Maven变得简单,相比而言,Ant的每个步骤都要你手工去定义。第二,这个模型是一种标准,在不同的项目中,使用Maven的接口是一样的,这样就不用去仔细理解每个项目的构建了,一般情况下,mvn clean install 这样的命令是通用的。我想,一定是吸收了许多项目的经验,Maven才能定义出如此完善的模型。
bear_fish
2018/09/19
6870
头条一面竟然问我Maven?
Maven是Apache软件基金会唯一维护的一款自动化构建工具,专注于服务Java平台的项目构建和依赖管理。
Java识堂
2020/02/19
9270
Maven详解
1 Maven介绍 1.1 项目开发中遇到的问题 1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行? 2、为什么在我的机器上可以正常打包,而配置管理员却打不出来? 3、项目组加
Java帮帮
2018/03/15
1.3K0
Maven详解
Maven系列第6篇:生命周期和插件详解?高手必备!
整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部有maven完整系列的连接。
路人甲Java
2019/11/25
3.2K0
Maven系列第6篇:生命周期和插件详解?高手必备!
Maven知识点速查
本文是学习项目管理利器——maven的Maven知识点速查 前置知识:无 Maven常用命令 compile 编译src/main/java文件 test 运行src/test/java下的带@Test的测试文件 package 打包src/main/java到target目录下生成jar包 install 打包并把jar包拷贝到本地仓库.m2下 deploy 打包并把jar包拷贝发布到远程仓库 Maven命令行创建目录骨架 mvn archetype:generate Maven中的坐标和仓库 构件通过坐
linxinzhe
2018/04/10
8460
从青铜到王者,Maven全了解
Maven是每个Java程序都会遇到的包管理工具,今天整理一下Maven的相关知识,从青铜到王者,一文全了解
香菜聊游戏
2021/05/31
5350
万字长文解析maven
现在IntellJ IDEA中已经集成了maven,如果都在IDE中操作,不下载maven也是可以的,但是settings.xml一定要改。
Louis XIV
2024/12/30
2480
万字长文解析maven
Maven聚合模块与继承和Maven的生命周期
因为Maven是提倡模块化编程的,所以会以多个工程分为多个模块。如果所有的功能、模块都写在一个工程里的话,不方便于扩展、升级、修改、查看和团队开发,而且也不方便于模块的复用。
端碗吹水
2020/09/23
5970
Maven聚合模块与继承和Maven的生命周期
maven 学习笔记
maven 官网 https://maven.apache.org 仓库查询 https://www.mvnrepository.com/ 编译,生成target文件夹 mvn compile 测试 mvn test 打包 mvn package 删除target文件夹 mvn clean 安装jar包到本地仓库中 mvn install 自动建立项目骨架 mvn archetype:generate [-DgroupId=xxxx(组织名,公司网址的反
Meet相识
2018/09/12
5140
Maven(二)Maven项目的创建(命令、myeclipse)及生命周期
上一篇给大家介绍了Maven的概念和仓库的一些信息,接下来给大家分享一下使用命令和MyEclipse创建Maven项目 一、使用命令管理Maven项目 1.1、创建Maven java项目  1)创建一个文件夹(MavenProject)——>该文件夹下按shift+右击选择在此处打开命令窗口——>这样创建的maven[java]项目就在该文件夹下   2)命令:mvn archetype:generate -DgroupId=com.zyh.maven.quickstart -DartifactId=s
用户1195962
2018/01/18
1.7K0
Maven(二)Maven项目的创建(命令、myeclipse)及生命周期
万字 Maven 入门教程
Maven 这个词可以翻译为专家的意思。它是由 Apache 组织的开源,主要服务 Java 平台项目的构建、依赖管理和项目信息管理。
羽月
2022/10/08
1.6K0
万字 Maven 入门教程
Maven基本知识
​ 将 apache-maven-3.5.0-bin.zip 解压到一个非中文无空格的目录下。 例如:
OY
2022/03/17
7330
Maven基本知识
活久见!64 张图带你 Maven 实战通关
通常 Web 项目 开发只会创建一个工程,然后所有的 jar 包都会存放到 WEB-INF/lib 目录下,如下图所示:
cxuan
2020/08/25
6861
maven实战总结,工作中常见操作
翻译:知识的积累、专家、内行。跨平台的项目管理工具。Apache 组织的开源项目。主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理。
Java识堂
2020/11/19
1.4K0
maven实战总结,工作中常见操作
14 个方位全面克服 Maven 的技术点
一文从 14 个方向分析 Maven 的技术点,在创建 Java 项目或者使用开源的项目代码的过程中不再错误理解 Maven 的概念,不再对于 pom.xml 感到无从下手,正确理解 Maven 在项目的生命周期中扮演的角色。另外,笔者增加整理的图示,希望在本 Chat 中读者能够快速有效的理解 Maven,并且让它不再成为创建项目和使用项目的障碍。
问问计算机
2021/05/08
8070
14 个方位全面克服 Maven 的技术点
Maven的pom文件那些事
jdk7//用于定义构建输出的一些附属的构建。classifier是不能直接定义的,只能存在附加的构件(插件)时,才能(必须)添加。在包名上也会有所提现(nexus-indexer-2.0.0-javadoc.jar)
迹_Jason
2019/05/28
1.5K0
《Maven实战》笔记
作为Apache组织中颇为成功的一个开源项目,Maven主要服务于基于Java平台的项目构建,依赖管理和项目信息管理
Yuyy
2022/06/28
1K0
跟着官方文档学Maven构建生命周期
Maven内置了三个生命周期:clean、default和site。生命周期是由多个顺序执行的阶段组成,它们的关系和说明如下:
dongfanger
2021/07/01
9100
相关推荐
Maven概念梳理 原
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验