Maven 是什么

Maven 是什么,第1张

这个在网上可以查到很多资料。简单来说是个类似ANT,但是比ANT更强的项目管理工具。

Maven是什么? 比较正式的定义:Maven是一个项目管理工具,它包含了:

一个项目对象模型 (Project Object Model),

一组标准集合,

一个项目生命周期(Project Lifecycle),

一个依赖管理系统(Dependency Management System),

和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

当我们步入到SpringBoot的世界后,我们的程序就可能由一个个微服务组成,面对着大量的服务,我们如何进行管理呢?

我最近几年一直使用IDEA作为开发工具,使用IDEA开发多服务组成的软件,我经历了三个阶段:

第一阶段:每个服务,建立一个项目;

这种方式的优点是服务之间很独立,缺点是每次切换服务,都很费时,而且在服务之间查看代码不方便。

第二阶段:所有的服务属于一个项目,项目下建立模块,每个服务对应一个IDEA模块;

和第一阶段的方式相比,这种方式的优点是服务之间查看代码比较容易。

第三阶段:在IDEA环境下,使用Maven的方式管理所有服务,所有服务属于一个项目,服务之间的关系构成树形结构,就像Windows或Linux的目录结构一样。

这个阶段,所有的服务一目了然,而且还能利用Maven的能力自动打包,感觉非常清爽!

下面,我用一个例子来讲解如何实现第三阶段的服务管理方式。

假如我们要开发一个电商平台,平台由前端(包含APP接入器、浏览器接入器、业务管理系统三个服务)、中间层(包含消息队列、事务处理器、业务驱动器三个服务)、后端(包含数据中心、规则引擎两个服务)三部分组成:

这是详细步骤:

第1步:打开IDEA,点击“Create New Project”:

第2步:选择Maven,然后点击Next:

第3步:GroupId输入com.flying,ArtifactId输入ec-platform,然后点击Next:

第4步:Project Name输入ec-platform,然后点击Finish按钮:

第5步:在ec-platform树节点选择 “New | Module” 菜单项:

第6步:选择Maven,然后点击Next按钮:

第7步:ArtifactId输入front-end,然后点击Next按钮:

第8步:Module Name输入front-end,然后点击Finish按钮:

第9步:重复第6-8步,分别建立mid-layer和back-end模块。完成本步骤后界面如下:

第10步:选择front-end节点的右键菜单项“New | Module”:

第11步:选择“Spring Initializr”,然后点击Next按钮:

第12步:Group输入com.flying,Artifact输入app-accessor,Java选择版本8,然后点击Next按钮:

第13步:根据需要选择Dependencies,然后点击Next按钮:

第14步:输入模块的信息,这里只需要修改模块的路径,修改后点击Finish按钮:

第15步:修改app-accessor下的pom.xml文件,修改build节点的内容,用于修改打包信息,修改后的文件内容为:

<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.bootspring-boot-starter-parent2.3.3.RELEASEcom.flyingapp-accessor0.0.1-SNAPSHOTapp-accessorDemo project for Spring Boot1.8org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.junit.vintagejunit-vintage-engineorg.apache.maven.pluginsmaven-jar-plugin*.properties*.yml*.xmltruelib/falsecom.flying.appaccessor.AppAccessorApplication./resources/${project.build.directory}org.apache.maven.pluginsmaven-dependency-plugincopy-dependenciespackagecopy-dependencies${project.build.directory}/lib/maven-resources-plugincopy-resourcespackagecopy-resourcessrc/main/resources${project.build.directory}/resourcesorg.springframework.bootspring-boot-maven-pluginnullnullZIPtrue${project.build.directory}repackageapp-accessor

复制

第16步:修改front-end目录下的pom.xml文件,将app-accessor作为front-end的子模块,并修改packaging的内容为pom。修改后文件内容为:

<?xml version="1.0" encoding="UTF-8"?> ec-platformcom.flying1.0-SNAPSHOT4.0.0front-endpomapp-accessor

复制

第17步:重复第10-16步,将所有的服务均以模块的形式加入到项目。加入后目录结构如下图:

第18步:打开Terminal窗口,输入mvn clean package -DskipTests命令,即可完成编译打包命令:

第19步:查看Windows目录,可以发现每个服务都生成了jar包:

说明:在本文的例子中,ec-platform、front-end、mid-layer、back-end目录中的src目录均没有源代码,可以直接删除。

idea中build project不能用

idea中pom.xml中packaging报错

idea如何刷新project

java一个请求返回多个照片

java中如何对一个数组随机重新排列

java中获取项目的相对路径

百所空乘院校联合招生!初,高中毕业可报名,入学签就业协议

航空名校招生

广告

springboot项目 maven无法自动导入jar,没有Dependencies目录

947阅读·0评论·0点赞

2020年6月23日

创建springboot项目时,maven项目没有生成plugins、Dependencies 选项 ,两个解决方式

888阅读·0评论·1点赞

2022年10月9日

IntelliJ IDEA 2021.2版本,热部署无效的解决办法

232阅读·0评论·0点赞

2022年12月2日

新建SpringBoot项目,java、resources目录没有变色,pom.xml变色,但是maven栏无Dependencies和Plugins

418阅读·2评论·1点赞

2022年6月28日

Springboot 多模块项目 maven库中有jar包,但是引入不到,也不报错变红

2848阅读·0评论·1点赞

2021年12月13日

关于idea的springboot项目的Plugins和Dependencies没有显示的原因

2.4W阅读·4评论·1点赞

2020年3月2日

创建springboot项目时,maven项目没有生成plugins、Dependencies 选项

156阅读·1评论·0点赞

2022年12月10日

Springboot项目配置Maven,pom爆红,右侧maven不显示plugins和dependencies,maven home directory永远都是c盘的那个路径

553阅读·1评论·2点赞

2022年9月2日

spring boot 初始项目无Maven Dependencies包解决方案

863阅读·0评论·1点赞

2020年6月15日

idea找不到persistence

4044阅读·0评论·0点赞

2018年3月29日

IDEA 的maven没有dependencies

1.问题描述:

      使用alibaba微服务体系搭建的项目,模块管理使用的maven,给项目引入swagger做接口文档,启动时报错,报错信息如下:

2.问题解决

升级guava版本为20.0以上。

3.问题排查思路

首先,查看错误日志,错误日志中英文的大体翻译为,“尝试调用了一个不存在方法,发生的位置在 DefaultModelDependencyProvider类中,下面这个方法不存在,可能方法存在....,guava-19.0.jar包中"

然后从错误日志中我们就可以分析出,由于guava-19.0这个jar引起的,并且报出的错误是某个方法不存在,那么我们就可以考虑到是这个jar的版本太低了,但是和swagger有什么关系那?那这个时候我们可以想到swagger有没有使用guava,打开编译器,查看swagger的包依赖关系:

使用idea的可以这样操作,右侧---》maven--->选中需要分析依赖的项目---》maven最上方有个show depenceies--->然后打开下面这张图--》左上角有个有 show conflicts--》红线就是有冲突的依赖--》放大就会发现如第二张图 swagger也依赖了guava,并且要求20.0的版本。

4.根本原因

maven的父子模块包依赖机制导致,父子项目依赖关系如下:

我们的项目就是在 父项目中引入的swagger,里面的swagger自己引入了20.0以上版本的guava使用,但是我们在子项目中又添加了如下依赖:

导致父项目的guava版本被覆盖成了19.0的低版本,所以无法找到swagger使用的某个方法了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/685913.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-31
下一篇2023-07-31

发表评论

登录后才能评论

评论列表(0条)

    保存