Maven技术

简介: Maven技术


一、 自动化构建工具

1.1 原有技术栈

JSP的本质是Servlet,Servlet是地地道道的后端技术,控制层当中我们使用的原生的Servlet,struct2的本质是action,SpringMVC的本事是Handler,

控制器的作用的就是接收请求、处理请求参数、返回请求、跳转页面、中间这一层叫业务逻辑层、在往下叫做持久化层,持久层的原生技术叫做jdbc,其他技术都是对这个技术的封装,持久化层用于操作数据库、持久化层所有技术的基石是jdbc,DBUtils是对jdbc的一个简单的封装,还有就是spring提供的spring jdbcTemplate(spring当中的东西大多都叫做模板、组件)hibernate是持久化层重量级选手,行业当中用的最多的还是Mybatis,数据库用的最多的还是MySQL和Oracle,MySQL比Oracle轻巧很多,逻辑层我们仿佛用的是spring,但是这样呢说的不是很贴切,业务逻辑层主要解决的是业务逻辑处理的问题,IOC和aop并不能帮我们解决这个业务处理的问题,顶多就是把Service这个bean呢进行自动装配,业务逻辑是都不不一样的很难提供一个通用的支持,IOC和aop工作在这一层,说她是这一层的解决方案还是优点牵强。

  • 这些技术在开发中存在的问题
  • 一个项目就是一个功能当一个项目
    如果一项项目非常的庞大,就不适合使用package划分模块,javaee当中很大的项目非常多非常多,这样在一个项目中开发非常的不方便,最好每一个模块对应一个工程,利于分工协作,这是一个好事,但是现有的技术没有办法将一个工程拆分成为多个模块,因为多个模块之间还还需要进行项目访问,不能让他们谁也访问不了谁,一个项目可以借助于maven拆分成多个工程。
  • 项目中所需要的jar包必须手动复制粘贴到webinfo的lib目录下,jar包需要别人给我们准备好,或者去官网下载。
    同样的jar包重复出现在项目下,浪费存储空间,让我们的工程非常臃肿,我们都喜欢轻巧的,借助于maven我们可以将jar包仅仅保存在仓库中,有需要使用的工程引入这个文件即可,并不需要真的把这个jar包复制过来,我们只是引用一下就可以了。就仿佛是变量对于对象的引用时一个意思,对象在堆空间当中只有一份,可以有多个变量进行引用,他引用jar包是通过一种坐标声明的形式。
  • 一个jar包依赖的其他jar包需要手动加入到项目中
    不同技术的官网提供jar包下载的形式是五花八门的,技术的官网就是通过maven或者svn这样的工具进行管理的,就像mybatis就是提供的一个依赖的信息,存与maven当中,借助于maven可以以一种规范的方式下载jar包因为,知名框架或者第三方工具的jar包都以规范的形式存放在了maven的中央仓库当中,以这种方式下载的jar包,内容也是可靠的。
    学spring的时候我们可以从哪里来的呢?

1.2 目前技术所存在的问题

1、一个项目就是一个工程

如果一个项目非常庞大,就不适合使用package来划分模块,我们之前划分模块主要是通过package来划分,但是当项目大了之后,Java项目中的项目是很庞大的,我们希望一个模块是自己的一个工程,这样的话就舒服多了,我们用现有的技术没有办法彻底分开的,需要相互依赖、互相访问的,我们借助maven就可以解决这个问题,借助于maven就可以将项目拆分成多个工程。

2、项目中的需要的jar包必须手动赋值粘贴到web-info/lib目录下

同样的jar包文件重复出现在不同的工程中,工程很臃肿,管理麻烦,我们借助于maven可以将jar包仅仅保存在仓库中,有需要使用的工程引用这个文件即可,并不需要真的把这个jar包复制到项目中,但是到真正打包部署的时候,一定会把这个jar包打入到项目中。

3、jar包需要替我们准备好,或者到官网去下载

借助于maven我们可以使用规范的坐标方式下载jar包,所有知名的jar包都发布在了maven中央仓库当中

4、一个jar包依赖的其他jar包需要手动加载到项目中

一个jar包依赖的其他jar包需要手动加入到项目中,一个jar包又依赖于另一个jar包,没有导入完全,肯定不能正常工作,maven可以自动将依赖的依赖导入到项目当中,省时省力。

1.3 Maven是什么

1、Maven本身也是Java写的,他是一款服务于Java平台的自动化构建工具,构建这个词是很关键的

2、构建工具发展历程: Make-Ant-Maven-Gradle(新秀)

3、什么叫构建:构建不是创建,构建是以Java源文件、框架配置文件、JSP、静态资源等为原材料去生产一个可以运行的项目的过程叫做构建。说成大白话,就是将这些源文件组成的项目打成一个可以运行的jar包(编译+打包+部署+搭建),编译:Java源文件编译到Class字节码文件。部署:一个BS项目最终运行的是动态Web工程本身,而是这个动态web工程编译的结果(可执行jar包),编译过后的可执行jar包里边的目录结构和动态Web工程目录结构是不一致的。

什么是构建,以Java源文件,框架配置文件,jsp,html,image等资源生产一个可以运行的项目的叫做构建,我们写一个项目,构建=编译+打包+部署+搭建,部署:一个bs项目最终运行的并不是动态web项目的本身而是这个这个动态web项目编译的结果,(打包成jar包部署之后也是解压成编译之后的目录结构,这就是真正被拿来运行东西。开发时的项目-我们创建的,我们叫做动态web工程,这个动态web工程的目录和最终编译之后的文件的目录(真正运行时读取的。)是不一致的。)

1.4 运行时环境

这个截图被称为运行时环境,这个不是目录,这个就是运行时环境,我们最常用的这个类String为什么我们拿过来就能用呢?他是Jdk自带的,我们不需要进行任何的导包,我们点这个类进去就发现他是在某个jar包里边,而我们为什么直接就能使用的原因是因为maven提供了这个运行时环境,这个运行时环境就将这些jar包和jar包中的文件已一种引用的方式引入到项目运行时环境当中,本质并没有将这个jar包copy到项目中,仅仅是一种引用引入,我们就可以使用这些jar包中的类,

tip:我们在Maven中引入坐标,他的作用一:将这些jar包作为依赖引入到运行时环境当中供我们开发使用,另外的一个就是根据引入的坐标,当我们进行构建项目进行运行的时候,我们可以将这些jar包打入到构建的项目中。所以,当我们在一个大项目中,引入多个我们开发编写的jar包时,对于同样的依赖,我们在坐标处引入一次就可以了,其他的pom文件中,我们可以加上一个scope属性,在这个scope属性当中我们定什么阶段这个起作用,这样的话,依赖只会在代码表写阶段起效,代码构建时会丢弃这个依赖,避免多重引入。

当我们把这个运行时环境删除之后,连最基本的Strign类型,我们都用不了了。

1、咱们开发工具中的Jre/Lib/Tomcat/是他的运行时环境,我们最常用的类String这个类,为什么在main方法中直接就能用呢?咱们也没导包,这是因为开发工具中有咱们的这个运行时环境,他在开发工具中已经导入进来了。rt就是runtime的缩写,也就是说在咱们编写源码的时候,想要用哪个类就必须将这个类所在的jar包导入到运行时环境当中,只不过这个动态Web工程都是自动给我们加入进来的,如果我们把这个运行时环境一出,我们的源码都报错了。加入我们没有在运行时环境当中引入这个Tomcat那么当我们使用JSP的时候也会报错。他这个运行时环境就是一组Jar包的引用,并没有把这些jar包引入到工程当中,但是当打包的时候,就把这些包引入到项目工程当中了。

一只煮熟的鸡

/代表我们项目的根目录,代表的事我们项目(chiken),我们的编译结果和我们的工程本身目录结构是不一致的,我们最终项目运行和访问的时候肯定是使用的编译之后的目录结构。编译之后的结果肯定是在Tomcat服务器上,

class目录是我们称之为类路径,编译结果就是webContent这个主体中的内容。

开发过程中,所有的路径和所有的配置文件中编写的配置的类路径等都是以编译结果的目录结构为标准的,我们要看的事这个目录,我们这个工程只是一个开发的环境,真正运行的事编译部署之后的目录结构。

07 07安装maven程序

maven这个程序本身就是java写的,所以maven这个工程也需要运行在jvm当中,

所以安装部署maven之前需要是否已经配置了javahome这个变量,maven通过

javahome来找这个jdk的位置,解压maven核心程序的压缩包,一个zip包,打开之后呢,

我们放在一个非中文无空格目录下,我们需要配置一个maven的环境变量,maven_home

相关文章
|
8月前
|
XML Java Shell
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)(一)
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)
233 1
|
8月前
|
XML Java Maven
【Maven技术专题】「知识盲区」教你如何使用深入分析Maven配置私服仓库的使用指南
【Maven技术专题】「知识盲区」教你如何使用深入分析Maven配置私服仓库的使用指南
137 0
|
8月前
|
XML Java Maven
【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
【Maven技术专题】「实战开发系列」盘点Maven项目中打包需要注意到的那点事儿
181 1
|
8月前
|
XML Java Maven
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)(二)
【深入浅出Maven开发实战】「入门教程系列」带你零基础学习和开发使用Maven开发工具实战指南(实战技术总结)
136 0
|
7月前
|
XML Java 数据库连接
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
219 0
|
8月前
|
存储 XML Java
【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出
【Maven技术专题】「入门到精通」教你如何使用Maven中引用依赖本地Jar包,并进行打包输出
697 0
|
Dubbo Java 测试技术
技术汇总:第十章:Maven Profile动态选择配置文件
技术汇总:第十章:Maven Profile动态选择配置文件
558 0
|
Java 程序员 Linux
初见Maven技术
初见Maven技术
初见Maven技术
|
网络协议 安全 Java
【CI/CD技术专题】「Docker实战系列」使用Maven插件构建Docker镜像的方法
【CI/CD技术专题】「Docker实战系列」使用Maven插件构建Docker镜像的方法
300 0
【CI/CD技术专题】「Docker实战系列」使用Maven插件构建Docker镜像的方法
|
Dubbo Java fastjson
技术:Maven中dependency三剑客浅谈(二)
maven是一款项目管理工具软件,可以通过一小段信息来描述、管理、报告的管理工具。maven除了简单的程序构建外,还提供了高级的项目管理。Maven 是 Java 生态系统中最流行的构建工具之一,其核心特性之一是依赖管理。下面我们将描述和探索有助于管理 Maven 项目中的三剑客【groupId】、【artifactId】、【version】。
技术:Maven中dependency三剑客浅谈(二)