分享好友 最新动态首页 最新动态分类 切换频道
Maven自动化构建依赖管理工具
2024-12-26 14:25

以之前学习的技术来说,我们开发的都是单一架构的项目。

单一架构;整个项目只有一个工程。

但是,以后我们要开发分布式架构。

分布式架构:一个项目是由很多个工程组成的,而各个工程之间存在下面四种关系

依赖:由Maven实现

继承:由Maven实现

聚合:由Maven实现

调用:需要借助其他分布式架构技术实现

Dubbo+Zookeeper组合

SpringBoot+SpringCloud组合

2.3自动化构建

构建的概念

“构建”其实就是以开发时所编写的代码为“原材料”去“生产”出来一个可以运行的项目过程。

我们开发的是工程,但是真正在服务器上运行的是工程“构建”的结果。

工程→一只鸡

构建→炖熟了

构建结果→可以吃的鸡

在没有具体使用Maven这样的构建工具前,其实在Eclipse中我们已经不知不觉的进行了构建的操作。

例如:清理、测试、编译、部署等等。

构建过程中的主要环节

清理:把上一次编译得到的*.class字节码文件删除,为下一次编译做好准备。

编译:重新将Java源程序编译为*.class字节码文件。

主体程序编译

测试程序编译

测试:执行预先写好的测试程序对主体程序进行测试

报告:测试结果

打包:将整个工程中的所有代码和配置文件等资源封装到一个压缩文件中,为部署做好准备

Java工程:jar包

Web工程:war包

安装:在Maven这样的工具中将打包得到的文件存放到Maven的仓库中。

部署:将打包的结果放到服务器的指定目录下使其可以运行。

构建工具在自动化部署过程中的作用

3Maven工具的使用

3.1工作机制

3.2解压配置Maven的核心程序

将apache-maven-3.5.4-bin.zip解压到非中文没有空格的目录下。

配置环境变量

path

套路:bin目录

MAVEN_HOME

套路:bin目录的上一级目录

※验证:在命令行查看Maven的版本

mvn -v

※注意:当前系统中必须正确安装了JDK

3.3核心程序配置

配置文件路径

MAVEN_HOME/conf/settings.xml

例如:MAVEN_HOME=D:installationsapacheapache-maven-3.5.4

那么settings.xml的路径是

D:installationsapacheapache-maven-3.5.4confsettings.xml

settings.xml配置文件结构,还没有配置

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns=“http://maven.apache.org/SETTINGS/1.0.0”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd”>

配置本地仓库路径

一定要记得从注释中拿出来,否则无效

D:RepMaven0906

配置阿里云镜像服务器地址

注意:一定到配置到mirrors标签的里面

nexus-aliyun

central

Nexus aliyun

http://maven.aliyun.com/nexus/content/groups/public

配置Maven工程的JDK版本

一定要配置到profiles标签的里面!可以直接复制

jdk-1.8

true

1.8

<maven.compiler.source>1.8</maven.compiler.source>

<maven.compiler.target>1.8</maven.compiler.target>

<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

注意:Maven工程能够使用的JDK版本会受到Maven核心程序版本的限制。

3.4Eclipse中设置Maven插件

要设置的点

更换工作区后需要重新设置

指定Maven核心程序的位置

指定settings.xml配置文件路径

4单个的Maven工程

4.1创建打包方式为jar的Maven工程

Finish

4.2创建打包方式为war的Maven工程

总体步骤和创建jar包工程一致,只是在选择打包方式的时候选择war。

然后需要生成web.xml,做法是工程→右键

4.3创建打包方式为pom的Maven工程

创建过程和前面基本一致,只是把打包方式改成pom即可。这样的工程中不写Java代码、框架配置文件、页面等等,而是管理其他Maven工程。

4.4相关概念

坐标:在Maven仓库的众多jar包中唯一的定位到某一个jar包

groupId:公司或组织域名倒序+项目名称

artifactId:模块名称(当前正在创建的工程的工程名)

version:版本

约定的目录结构

Maven为了实现自动化构建,设计约定的目录结构,基于约定的目录结构,Maven就知道在工程中Java源文件位置、配置文件位置、测试程序的位置等等,进而可以对源文件进行编译、执行、加载读取配置文件以及执行测试。

POM

Project Object Model工程对象模型

Maven对每一个Maven工程进行构建环节操作和依赖的管理都是基于pom.xml

生命周期

特点:在每一个生命周期内部,执行任何一个环节,Maven都会从整个生命周期最初的位置开始执行。所以,假设我们想执行下面几个操作

compile

test

package

install

那么,直接执行install就可以了,compile、test、package都会包含在install执行的过程中。

Maven这样设计的目的是为了进一步提高构建过程的自动化程度,想构建的时候不必过问具体的构建过程,而是直接执行最终步骤即可。

Clean生命周期[了解]

pre-clean

clean

post-clean

Default生命周期[了解]

最重要的生命周期,包含了主要的构建环节

……

compile

……

test-compile

……

test

……

package

……

install

deploy

Site生命周期[了解]

pre-site

site

post-site

site-deploy

4.5常用Maven命令

命令行执行

第一步:打开命令行窗口

第二步:进入pom.xml所在的目录

D:workstationStation180906Pro14_MavenSingleProject

第三步:执行Maven命令

mvn clean

mvn compile

mvn test

mvn package

mvn install

mvn deploy

执行效果参考如下

Eclipse执行

在pom.xml文件上点右键→Run As→Maven clean等等

执行效果参考如下

如果想要执行没有提供的Maven命令,点击Maven build…

如果点击Maven build可以直接执行以前执行过的Maven命令。

具体命令介绍

mvn clean

清理

mvn compile

编译主程序

mvn test-compile

编译测试程序

mvn test

执行junit测试程序

mvn package

执行打包操作。Java工程打jar包,Web工程打war包。生成的jar包或war包会放在target目录下。

5Maven jar包下载失败

5.1现象表现

表现形式不局限于这一种,但是这是最典型、最直接的表现。

另一种表现形式

*.lastUpdated结尾的文件:Maven在下载jar包的过程中文件名都是以lastUpdated结尾的,表示这个文件正在下载。但是如果下载失败,那么Maven不会自动删除lastUpdated后缀。

下次重新下载时,Maven会忽略以lastUpdated为后缀的文件,也不会重新下载。我们如果不进行人为干预、处理,那么这些下载失败的jar包就会一直保持这个状态。

人为干预的方式是:手动把lastUpdated结尾的文件删除,让Maven重新下载。而这个操作使用clearLastUpdated.bat脚本后可以提高效率。

5.2clearLastUpdated.bat脚本使用

第一步

将clearLastUpdated.bat文件放在Maven仓库的根目录下。

第二步

使用文本编辑器打开clearLastUpdated.bat文件,如果没有文本编辑器使用记事本也一样

第三步

双击打开,按照提示使用

有可能遇到的问题

cls

@ECHO OFF

SET CLEAR_PATH=D:

SET CLEAR_DIR=D:Program Filesmaven

解决办法:让Maven仓库的路径没有空格

5.3基本思路

将下载失败的jar包删除,让Eclipse重新下载。

找到jar包的存储位置

jar包→右键→properties→复制路径

删除

点击工程→alt+F5→OK

如果再次下载的jar包还是损坏的,就再试一次

5.4文件校验工具的使用

原理:哈希加密算法

哈希算法中包含很多具体算法,具体算法之间主要的区别是加密强度不同。具体加密算法包括:MD5、CRC32、SHA1等等

特点1:不可逆,不能通过密文反推出明文。

特点2:在具体加密算法确定的前提下,不管输入的数据体积多么庞大或多么小,输出的数据长度固定。例如:MD5加密的结果固定是32位,不管输入的是1KB的数据还是100T的数据输出的结果都是32位。

特点3:在具体加密算法确定的前提下,输入数据有细微改变,输出数据跟着改变;输入数据不变,任何时候执行加密结果都一样。

校验文件原理

基于哈希加密的文件校验工具使用

6工程之间的关系

6.1依赖

概念

A工程(jar包)用到了B工程(jar包)中的类,那么A依赖B。

Maven工程中通过坐标配置依赖信息

junit

junit

4.12

test

org.springframework

spring-core

4.0.0.RELEASE

在工程间建立依赖关系

com.maven

Dependency_Dao

0.0.1-SNAPSHOT

根据坐标在本地仓库中查找jar包的方式

com.maven

Dependency_Dao

0.0.1-SNAPSHOT

Maven仓库的根目录/com/maven/Dependency_Dao/0.0.1-SNAPSHOT/Pro18_Dependency_Dao-0.0.1-SNAPSHOT.jar

Maven根据依赖的jar包的坐标到Maven本地仓库中查找jar包,如果找不到就无法解析依赖信息。

Maven的install命令

将Maven工程安装到本地仓库

依赖的传递性

A依赖B,B依赖C,A是否可以不配置依赖信息直接使用C?可以使用。但是需要参照依赖范围

compile范围:可以传递

test范围:不能传递

provided范围:不能传递

依赖的范围

compile:默认的依赖范围。

对main目录下的代码:有效

对test目录下的代码:有效

部署到服务器:有效

test:专门用于测试的jar包

对main目录下的代码:无效

对test目录下的代码:有效

部署到服务器:不参与

provided:表示“已提供”的jar包

对main目录下的代码:有效

对test目录下的代码:有效

部署到服务器:不参与

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>

针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺

全都是一丢一丢的收集整理纯手打出来的

更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>

[外链图片转存中…(img-h2xZLviL-1713473924989)]

针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺

[外链图片转存中…(img-lLjBgaWR-1713473924991)]

全都是一丢一丢的收集整理纯手打出来的

更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

[外链图片转存中…(img-5xkOIQFc-1713473924993)]

最新文章
王者荣耀挚爱玫瑰怎么获得
王者荣耀挚爱玫瑰怎么获得?挚爱玫瑰是王者荣耀中的一个道具,可以送给自己的游戏好友,增加与好友之间的亲密度,不少玩家不是很清楚这个道具要怎么获得,这次就由8495小编来给大家讲讲王者荣耀挚爱玫瑰获取攻略,感兴趣的小伙伴一起来看看吧!
微信广告大事件直播推广解决方案升级-上虞网络公司为你呈现
产品升级PRODUCT PROMOTION越来越多的品牌选择通过直播推广方式做大事件营销,短时间内集中曝光,高效触达目标用户并提升品牌影响。微信广告不断丰富营销触点,打造大事件直播推广解决方案,助力奢侈品、汽车、3C 等行业品牌在大事件营销中
迅捷清理大师 for Android V1.0.1 安卓手机版
迅捷清理大师app是一款专业的手机清理助手,这款软件非常适合用户朋友们管理自己的手机后台,支持清理清理各种垃圾,深度快速释放手机内存,有需要的朋友可以下载使用。  迅捷清理大师app是一款非常实用的工具,用户在这款迅捷清理大师ap
整体裁员超5000人,有人当天离职!理想汽车智驾团队的日子并不好过.....
最近智驾圈最火的莫过于理想汽车的裁员消息,速战速决,当天谈完第二天就走。虽然理想官网迅速回应,但对自动驾驶之心来说,验证并不难。从17级到15级,去年社招进来还没转正的同学也受到很大影响,智
超真实美女写真生成:用AI工具轻松打造你的AI女友
在这个数码化的时代,想必很多家庭和朋友聚会中的照片,都开始增加了不少虚拟元素。不久前,我在社交媒体上刷到一张精致的美女写真,特效、构图都堪比专业摄影师之作,却发现她竟是由AI生成的。想到我自己也能拥有如此美丽的数字形象,心中
网站seo优化软件外包(seo外包服务网站优化)
大家好,今天小编关注到一个比较有意思的话题,就是关于网站seo优化软件外包的问题,于是小编就整理了3个相关介绍网站seo优化软件外包的解答,让我们一起看看吧。一般公司中完整的SEO团队都包括哪些职位?长沙企赢信息技术有限公司介绍?se
华为MatePad Paper初体验
昨天刚收到官网首发的第一款电纸书MatePad Paper,使用了一个晚上,第一时间把个人的使用感受发给大家,供大家购买参考。一、好处:1、护眼,看书感觉像纸张一样的质感。阅读效果确实比我很多年以前买过的6英寸的阅读器效果好多了,尤其是
项目文档管理软件
在当今信息时代,项目文档管理对于企业的运营和项目管理起着至关重要的作用。随着企业越来越依赖项目来推动创新和增长,高效的项目文档管理成为项目成功的关键因素之一。因此,选择一款适合自己企业需求的项目文档管理软件是至关重要的决策
精准策略解码,高效优化百度推广方案,全面提升广告效能
深入解析优化百度推广方案,关键在于精准定位关键词、合理设置出价和创意,定期调整优化策略。通过分析数据,挖掘潜在客户需求,提高广告投放效果。结合百度平台特色,利用智能推广工具,实现高效。优化百度推广方案需持续关注数据变化,灵
揭秘12月第2周武侯人气楼盘榜单!这些楼盘为何备受关注?
热度排名楼盘名地址价格1新绿启境一环路南三段16号省体育馆旁40000元/平方米2科华388南二环科华旁王府井对侧28000元/平方米3保利天悦航空路与高攀路交汇处18000元/平方米起4尊邸中环路(火车南站东路15号,城南驿站旁)25000元/平方米5会所
相关文章
推荐文章
发表评论
0评