配置镜像仓库,先前的所有配置会转到镜像仓库中。
默认仓库位置.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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
总结
对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)
Java面试精选题、架构实战文档
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
总结
对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)
[外链图片转存中…(img-MrxLSmRH-1713693012348)]
Java面试精选题、架构实战文档
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!