我看maven之ssm整合

本文详细介绍了如何配置Maven仓库、管理settings.xml、在Eclipse中集成Maven、处理版本冲突,以及构建web项目的过程。此外,还讨论了Java开发中面试准备的重要性,包括依赖管理和冲突解决策略。
摘要由CSDN通过智能技术生成

配置镜像仓库,先前的所有配置会转到镜像仓库中。

默认仓库位置.m2 repository,将settings.xml复制到更改后的本地仓库中,这样maven版本更新不用修改settings.xml

在eclipse4.0及MyEclipse中就不需要安装maven插件,在window–preference中可以查看是否有maven插件,没有就装Maven插件,复制Maven插件到eclipse安装目录中的dropins中,然后修改eclipse.ini,在这个文件里的512m后面添加-vm,换行,再添加jdk/bin/javaw.exe保存。

eclipse是默认运行在jre之上的而maven需要jdk的支持,需要tools.jar在jdk/lib目录中,所以修改eclipse的JRE,java—Installed JREs–ADD–Next–把本地JDK的目录放到JRE home中,并设置Dmaven.multiModuleProjectDirectory=$M2_HOME–最后勾选JDK

③更改maven本地的配置Installactions—ADD—把本地的maven目录放进去

④修改setting的路径

会出现的问题:

1、如果版本不匹配 则mvn -v查看maven的jdk版本,然后在eclipse中配置当前使用的jdk

2、run as–>Maven build…–>在goals中compile(可以在此处使用其他的命令,如:package)—》run

若报-Dmaven.multiModuleProjectDirectory错误,则在选项–>java–》installed JRES 中设置jdk的参数,

添加上“-Dmaven.multiModuleProjectDirectory=$M2_HOME”

完整的项目构建过程:清理,编译,打包,测试,集成测试,验证,部署,clean complie test package install

生命周期:clean 清理项目pre-clean 执行清理前的工作,clean执行上一次构建生成的所有文件,post-clean执行 清理后的文件; default 构建项目complie test package install ;site生成项目站点 pre-site生成项目站点前要完成的工作,site 生成项目站点的文档 post-site 生成项目站点后要完成的工作,site-deploy 发布项目站点到服务器上;

注意,Maven的生命周期对应的命令是顺序执行,没有人为的顺序的一个个执行,那Maven会默认的自动运行。

pom.xml常用元素:

指定了当前pom的版本

反写的公司网址+项目名

项目名+模块名

第一个0表示大版本号、第二个0表示分支版本号、第三个0表示小版本号

snapshot快照版本;

alpha内测版本;

beta公测版本;

release稳定版本;

GA 正式发布版本

打包方式,默认是jar项目描述名项目地址项目描述开发人员列表许可证信息组织信息 设置依赖是否可选,true/false 排除依赖传递列表 dependencyManagement为依赖的管理,一般用于父模块中,运行时不会被编译加载依赖。用于子模块继承父模块中依赖,比如junit测试依赖。build中为插件列表,会放相应的插件,parent用于对父模块中pom的继承,modules用于当项目启动时,需要多个模块是,对其他项目进行编译,不需要一个个进行编译。dependencies表示依赖列表,dependency表示依赖项,scope表示依赖范围,optional表示设置依赖是否可选,默认为false,默认继承,为true则项目必须加载依赖项。exclusions表示排除依赖传递列表,比如如果项目引用spring,spring中被引用其他jar也会被引用,此为依赖传递。

在开发者如果要使用某一个框架,就要把这个框架引入到项目的classpath中

maven提供了三种classpath分别是编译,测试,运行

依赖范围

scope依赖范围

1.compile:默认范围,编译测试运行都有效

2.provided:在编译和测试时有效

3.runtime:在测试和运行时有效

4.test:只在测试时有效

5.system:在编译和测试时有效,与本机系统关联,可移植性差

6.import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置

install指令能把项目打包到本地仓库,运行install指令,同时还运行了package打包。

编译一个项目,如果存在依赖,首先会在本地仓库查找,如果没找到,直接到中央仓库查找,如果还是没找到,则报错。所以编译一个存在本地依赖的项目,本地依赖一定要运行install指令,把依赖的项目打包到本地仓库。

如果想排除某个依赖的项目,则需要在pom.xml添加exclusions标签,添加到已经添加了排除依赖的依赖里,把需要排除的依赖的坐标引进来。

依赖的传递性

需要将父类pom install到本地仓库中, 子类pom在中加入

父类依赖坐标 即可调用

在中运用 来排除所不需要的父类pom

创建三个maven项目bge,nange,shanji。nange依赖bge项目启动,shanji依赖nange启动,启动下层项目时,上层需要打成jar。如图如果不写其中的exclusion中的内容时,shanji也会依赖bge的jar。此为传递依赖。

maven中jdk版本设置 settings.xml

依赖冲突

不同版本的构件

1.短路优先

2.先声明先优先

如果路径长度相同,则谁先声明,先解析谁

A传递依赖于D的不同版本,A会依赖于哪个版本的D;

解决冲突的两大原则:短路径优先(路径长度不同),先申明者优先(路径长度相同)

1)A->B->C->D 2)A->E->D 此时A依赖于2)情况下的D的版本

1)A->B->D 2)A->E->D 此种情况下,若在A的pom文件中,B的依赖声明先于E的依赖声明,则A依赖于1)情况下的D的版本

聚合:若想将多个maven项目install到本地仓库,为了不一个一个的操作,maven提供了一种方式可以一起将这些项目install到本地仓库,此法成为聚合

作如下更改:pom

加入代码:

…/hongxing-bge

…/hongxing-nage

…/hongxing-shanji

保存,run as clean install即可

继承:解决多个项目含有相同特性的问题:

新建maven项目:作如下更改:

pom

<junit.version>3.8.1</junit.version>

</>

</>

${junit.version}

test

以上是对父级的pom。xml文件的更改,下面是对子项目pom。xml文件的修改:

加入: ;</>

</>

使用maven构建web项目

1:打开Eclipse

2:创建Maven项目,选择archetype-webapp模板

3:解决Servlet没有生命依赖的问题,在pom.xml中添加servlet的依赖,可以去中央仓库选择servlet版本

例如:

javax.servlet

javax.servlet-api

4.0.0-b01

4:手工完善Maven约定好的目录结构

可以在navigator窗口中手动新建

…/src/main/java

…/src/test/java

5:Project Explorer中更新项目

6:创建项目的输出目录

build path中设置输出路径output folder,确保每个module都输出在…/tartet/classes目录中

7:将Maven项目转换为Web项目

右击-属性-project facets-勾选动态模板(Dynamic Web Module)

8:修改部署时配置去掉多余的配置项例如:测试代码

右击-属性-Deployment Assembly-删除多余的配置项(测试代码)

9:使用package命令打包项目—使用jetty这个插件(在Maven的中央插件库中寻找)作为Web容器,在中央仓库查找jetty的plugin坐标配置到pom.xml中

pom.xml例子:

webbproject-demo

org.mortbay.jetty

jetty-maven-plugin

2.1.1

package

run

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

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

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

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

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)

image

Java面试精选题、架构实战文档

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

总结

对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)

[外链图片转存中…(img-MrxLSmRH-1713693012348)]

Java面试精选题、架构实战文档

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值