Hello Maven快速入门,神策数据java面试题

点击File -> New -> Project

选择Maven,然后勾选Create from archetype(这个archetype是选择固定的架构模板来创建项目),选择maven-archetype-webapp(这是做web开发常用的架构)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存失败,源站可能有防盗链机制,建议将图片保存下来直接上传下上传(iADLrpGLeXmb-1608000229292)(maven.assets/6-project1.png)(maven.assets/6-project1.png)]

点击Next,这里输入GroupId、ArtifactId和Version,可以理解为开发组名、项目名、版本号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkpHL6Pl-1608000229294)(maven.assets/6-project2.png)]

点击Next,这里也是配置Maven的目录和配置文件、本地仓库的路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vRd6pZFN-1608000229295)(maven.assets/6-project3.png)]

最后就是确定项目名称和保存位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dqx2AHwu-1608000229297)(maven.assets/6-project4.png)]

点击Finish,就完成了一个Maven项目的创建

Maven项目的结构

========================================================================

项目打开后,会出现下面的弹窗,import changes是导入配置的修改,后面的选项是每次修改配置后自动导入,点击import changes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Df2caA22-1608000229298)(maven.assets/7-project1.png)]

在main目录下创建java和resources目录,在src目录 需要zi料+ 绿色徽【vip1024b】

下新建test目录,在test里面创建java目录

然后点击java目录右键 Mark Directory As 为Sources Root(源码目录),同样的方法将resources目录标记为Resources Root(资源目录),将test/java标记为Test Sources Root(测试源码目录),如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6iZzbzrV-1608000229299)(maven.assets/7-project2.png)]

下面我们了解下Maven项目的主要目录结构:

  • src 源码

  • main 主目录

  • java java源码目录,java的包和类都在这里

  • resources 资源文件目录,保存各种配置文件

  • webapp 前端代码,包含各种css\html\js前端目录和代码

  • web-inf web配置文件

  • test/java 测试用例代码

  • pom.xml 主要配置文件,包含项目、依赖、插件等配置

注意:不管使用什么开发工具,Maven的目录结构都是统一的,项目可以直接在不同的开发工具中打开

POM文件介绍

=====================================================================

Maven项目的主要配置都在pom.xml文件中,下面简单介绍下主要的配置:

  • modelVersion 模型版本,默认是4.0.0

  • groupId 开发组名

  • artifactId 项目名

  • version 版本号

  • packaging 打包方式,打包方式有三种:

  • war 适合JavaEE项目,需要到部署服务器

  • jar 适合JavaSE项目,可以单独运行,或导入其他项目

  • pom Maven特有的,用于项目的聚合、继承等

  • properties 属性值配置,可以用于配置jdk版本或者各种第三方依赖的版本

  • dependencies 配置第三方依赖的地方

  • plugin 插件的配置

依赖管理

==================================================================

当我们需要第三方的依赖时,不需要去网上找jar包了,只需要在dependencies添加依赖配置

依赖配置可以到Maven的网站上搜索,网址:https://mvnrepository.com

如:mysql的依赖

mysql

mysql-connector-java

5.1.38

将它复制到dependencies里面,然后点击import changes,Maven会通过本地仓库>远程仓库>中央仓库的方式去查找和下载jar包。

在dependency的几个属性中,除了组名、项目名、版本外还有一个scope属性,它控制依赖起作用的范围。

scope的值有:

1)compile 编译,默认使用,在编译、测试、运行时起作用

2)test 测试,在编译和测试时起作用

3)provided 已提供,环境已提供该依赖,如Tomcat提供Servlet依赖

4)runtime 运行时,测试和运行起作用

5)system 由系统提供

6)import 用于导入

项目生命周期管理

======================================================================

Maven能管理这个项目的整个生命周期,生命周期包含:

  1. clean 清理,部署前清理项目

  2. default 默认,默认生命周期又包含7个步骤

  3. validate 验证

  4. compile 编译

  5. test 测试

  6. package 打包

  7. verify 核准,部署前验证

  8. install 安装,安装到仓库

  9. deploy 部署,部署服务器

  10. site 发布,发布网站,生成报告

IDEA提供了Maven窗口,可以快捷的操作上面的生命周期,双击某个选项都可以执行该生命周期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6DlK2KPb-1608000229301)(maven.assets/9-lifecircle.png)]

继承和聚合

===================================================================

POM项目对象模型把项目以面向对象的方式管理,项目之间可以有继承、聚合这些特性。

继承,项目之间可以继承,子项目可以继承父项目的依赖和插件

子项目的pom.xml中用parent继承父项目,父项目的打包方式必须是pom

父项目artifactId

父项目groupId

父项目version

聚合,一个项目可以把多个项目整合到一起打成一个包,部署到一起,聚合项目用modules配置被聚合的项目

项目1

项目2

继承和聚合一般一起使用,我们可以在一个大项目中创建多个子项目以完成不同的业务,子项目继承父项目,父项目聚合所有子项目。

动手测试下:在前面的Maven项目上添加两个子模块,点击New -> Module (模块,相当于子项目)

可以看到父项目的pom.xml出现了modules节点,里面是两个子模块的名称,而且打包方式改为了pom

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3MWPZzFK-1608000229302)(maven.assets/10-jc_jh.png)]

子项目中出现了parent节点,继承父项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d7WIXWgO-1608000229304)(maven.assets/10-jc_jh2.png)]

依赖冲突的调解

=====================================================================

项目导入jar包时,项目中可能会存在同样类型但版本不同的jar包,这就是依赖冲突,最终导致项目无法运行。

那么Maven是如何解决依赖冲突问题的呢?

1)最短路径原则

​ 首先我们要知道,依赖存在传递性,也就是:A依赖B,B依赖C,那么A也依赖C

​ 如果存在下面的情况:A同时存在X依赖的1.0和2.0版本,按最短路径原则,A将使用X2.0版本

​ A—>B—>C—>X(1.0)

​ A—>D—>X(2.0)

2)最先声明原则

​ 那么如果路径长度相同怎么办呢?按最先声明原则,哪个依赖在pom中先出现就使用哪个,那么就是X1.0

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

不要停下自己学习的脚步

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

字节跳动的面试分享,为了拿下这个offer鬼知道我经历了什么

​ 首先我们要知道,依赖存在传递性,也就是:A依赖B,B依赖C,那么A也依赖C

​ 如果存在下面的情况:A同时存在X依赖的1.0和2.0版本,按最短路径原则,A将使用X2.0版本

​ A—>B—>C—>X(1.0)

​ A—>D—>X(2.0)

2)最先声明原则

​ 那么如果路径长度相同怎么办呢?按最先声明原则,哪个依赖在pom中先出现就使用哪个,那么就是X1.0

读者福利

分享一份自己整理好的Java面试手册,还有一些面试题pdf

不要停下自己学习的脚步

[外链图片转存中…(img-msoILj1P-1710349209528)]

[外链图片转存中…(img-c9IdLTmu-1710349209528)]

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值