SSM基础篇(一)--Maven

LogicOrbit
• 阅读 1838

Maven

Maven: 翻译为"专家"、"内行",是Apache下的一个纯Java开发的一个开源项目。
Maven是一个项目管理工具,使用Maven可以来管理企业级的Java项目开发及依赖的管理。
使用Maven开发,可以简化项目配置,统一项目结构。总之,Maven可以让开发者的工作变得更简单。

依赖管理:要明白依赖管理,首先要知道什么是依赖?
一个Java项目中往往会依赖一些第三方的jar包。比如JDBC程序中要依赖数据库驱动包,或者在使用c3p0连接池时,要依赖c3p0的jar包等。这时我们称这些Java项目依赖第三方jar包。
而所谓的依赖管理,其实就是对项目中所有依赖的jar包进行规范化管理。

1、不使用Maven,采用传统方式管理jar包的弊端:

(1)在一些大型项目中会使用一些框架,比如SSM或者SSH框架,而框架中所包含的jar包非常多(甚至还依赖其他第三方的jar包),如果这些jar包我们手动去网上寻找,有些jar包不容易找到,比较麻烦。
(2)传统方式会将jar包添加到工程中,比如Java工程中将jar包放在工程根目录或者放在自建的lib目录下;JavaWeb工程会将jar包放在:/WEB-INF/lib目录下,这样会导致项目文件的体积暴增(例如,有些项目代码本身体积可能仅仅几兆,而加入jar包后,工程的体积可能会达到几十兆甚至百兆)。
(3)在传统的Java项目中是将所有的jar包统一拷贝的同一目录中,可能会存在jar包文件名称冲突的问题!
(4)在进行项目整合时,可能会出现jar包版本冲突的问题。
(5)在传统java项目中通过编译(手动编译或者在eclipse保存自动编译)、测试(手动在main函数中测试、junit单元测试)、打包部署(手动打war包/手动发布)、运行(手动启动tomcat运行),最终访问程序。

2、使用Maven来管理jar包的优势:

(1)Maven团队维护了一个非常全的Maven仓库(中央仓库),其中几乎包含了所有的jar包,使用Maven创建的工程可以自动到Maven仓库中下载jar包,方便且不易出错。
另外,在Maven构建的项目中,如果要使用到一些框架,我们只需要引入框架的核心jar包,框架所依赖的其他第三方jar包,Maven也会一并去下载。
(2)在Maven构建的项目中,不会将项目所依赖的jar包拷贝到每一个项目中,而是将jar包统一放在仓库中管理,在项目中只需要引入jar包的位置(坐标)即可。这样实现了jar包的复用。
(3)Maven采用坐标来管理仓库中的jar包,其中的目录结构为【公司名称+项目/产品名称+版本号】,可以根据坐标定位到具体的jar包。即使使用不同公司中同名的jar包,坐标不同(目录结构不同),文件名也不会冲突。
(4)Maven构建的项目中,通过pom文件对项目中所依赖的jar包及版本进行统一管理,可避免版本冲突。
(5)在Maven项目中,通过一个命令或者一键就可以实现项目的编译(mvncomplie)、测试(mvn test)、打包部署(mvn deploy)、运行(mvn install)等。

还有发布到tomcat服务器中运行: mvn tomcat7:run。如果想实现上面的所有过程,只需要记住一个命令:mvn install
总之,使用Maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会优先使用Maven来构建项目.

远程仓库介绍

www.maven.org是maven的中央仓库,搜索一个框架后,找到某个版本,可以下载jar。
maven.aliyun.com是国内的maven中央仓库,是中央仓库的镜像,访问速度快。

框架排行

mvnrepository.com可以查看当前每个框架的的版本号及热度

使用maven前的准备工作

maven.apache.org可以下载maven

下载完成后解压修改conf文件夹下的settings.xml文件

SSM基础篇(一)--Maven

如果访问速度过慢可以更改下载路径

SSM基础篇(一)--Maven

开发工具配置maven

eclipse
SSM基础篇(一)--Maven
idea
SSM基础篇(一)--Maven

Maven的作用

  • 统一开发规范与工具
  • 统一管理jar包

Maven构建的普通Java项目,对源代码、单元测试代码、资源乃至后续需要的文件都有专门的目录规划。
SSM基础篇(一)--Maven
上面的最后有一个pom.xml,这是Maven的核心配置文件,pom称为Project Object Model(项目对象模型),它用于描述整个Maven项目,所以也称为Maven描述文件。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <!--
      Maven:Maven是一站式的项目管理工具,负责项目的构建/打包/测试/发布等工作。


      知识点一:了解坐标的的作用
      maven项目标识 组id/项目名称/版本号 称之为maven的坐标
      1.maven中管理的jar包文件众多 如何有效的管理呢? 采用坐标的形式
      2.在本地的仓库中jar包位置就是坐标的位置,maven工作通过坐标查找执行的jar


      知识点二:maven中的jar包文件具有依赖的传递性
      例子: A.jar ~~~ B.jar ~~~ C.jar ~~~ D.jar
      maven。jar包的传递性如何实现?


      当通过pom.xml文件添加依赖时,maven会根据坐标查找jar包文件。
      当加载jar包完成之后,会解析当前的pom.xml文件,如果其中还有jar包的依赖项,则再次解析加载jar包
      最终实现jar包的传递性
   -->
   <groupId>com.jt</groupId>
   <artifactId>springboot_demo1</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>springboot_demo1</name>
   <description>Demo project for Spring Boot</description>


   <!--
      作用:1.parent标签 集中定义了springboot所有依赖jar包的版本信息(version),由官网解决了jar包冲突性问题
         2.本地仓库中没有该文件的jar包,parent表示的是一个聚合工程(定义:大工程下包含许多小工程)


   -->
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.3.4.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>


      <!--maven项目的配置信息-->
   <properties>
      <!--指定了jdk版本信息-->
      <java.version>1.8</java.version>
      <!--跳过测试类运行 默认情况下程序打包会执行测试类,如果测试类有问题,则程序打包失败-->
      <skipTests>true</skipTests>
   </properties>




   <dependencies>
      <!--
         手动依赖项 该依赖项被springBoot进行了高度整合
         springBoot帮助大家动态的生成了配置项目,简化了配置的步骤,该配置称之为自动化的配置信息
         spring-boot-starter springBoot自动化的启动项
         开箱即用:只需要导入jar包简单的配置即可实现对应的功能
      -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>


      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.junit.vintage</groupId>
               <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
         </exclusions>
      </dependency>


      <!--支持热部署 -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
      </dependency>


   </dependencies>


   <!--SpringBoot利用maven管理工具进行项目打包/发布/等操作-->
   <!--如果没有这个build标签,我们打包发布时会提示(jar中没有主清单属性)-->
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>


</project>

我们可以在 <dependencies></dependencies>中添加依赖,但添加完后,需要等待(eclipse)/手动(idea)下载依赖到本地库,如果本地库存在,则会直接引入无需下载。

点赞
收藏
评论区
推荐文章
推荐学java 推荐学java
4年前
推荐学java——Maven初识
Maven介绍Maven是Apache下开源的Java项目管理工具,对软件项目提供构建与依赖管理。其为Java项目提供了统一的管理方式,已成为业界标准。Maven下载安装官网下载地址:https://maven.apache.org/推荐下载压缩包版本,然后解压到本地不带中文路径的目录下,我这里解压在了D盘的根目录下:D:\ProgramF
Wesley13 Wesley13
4年前
SSM 框架
SSM框架04使用maven创建web项目<p<spanstyle"fontsize:14px;"&nbsp;&nbsp;&nbsp;&nbsp;本篇介绍使用MAVEN来管理jar包,就不用一个一个去添加和下载jar包了,直接在maven配置文件中配置就可以了,maven可以帮助我们自动下载。<spanstyle"co
kenx kenx
4年前
Maven 基础标签之版本管理和冲突解决
前言我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线maven基础Maven是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理每个maven项目根目录都会有一个pom.xml文件,负责项目构建,依赖管理在这个文件里面,你只需要添加相应的jar包坐标配置,maven就会自动
Stella981 Stella981
4年前
CentOS 7 安装 Gradle
       Java生态体系中有三大构建工具:Ant、Maven和Gradle。其中,Ant是由Apache软件基金会维护;Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在JakataTurbine项目中用来简化构建过程;Gradle是一个基于ApacheAnt和ApacheMaven概念的项目自动化构建开源工具,它使用一种基于G
Stella981 Stella981
4年前
Maven 集成Tomcat插件
Maven已经是Java的项目管理标配,如何在JavaEE开发使用Maven调用Web应用,是很多同学关心的问题。本文将介绍,Maven如何介绍Tomcat插件。MavenTomcat插件现在主要有两个版本,tomcatmavenplugin和tomcat7mavenplugin,使用方式基本相同。tomcatmavenplugin插
Stella981 Stella981
4年前
Maven简介安装
什么是MavenMaven是一个由Apache公司推出的一个管理项目的工具,它包含了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段中插件目标的逻辑Maven能解决什么问题1.管理jar包,防止jar包冲突2.Maven也
Wesley13 Wesley13
4年前
01.Flink笔记
Flink开发环境部署配置Flink是一个以Java及Scala作为开发语言的开源大数据项目,代码开源在github上,并使用maven来编译和构建项目。所需工具:Java、maven、Git。本次操作是在windows环境下。一、工具安装Java配置(略)maven配置1.
Stella981 Stella981
4年前
Maven总结
何为maven?1.Maven主要是基于Java平台的项目构建,依赖管理和项目信息2.Maven是优秀的构建工具,跨平台,消除构建的重复,抽象了一个完整的构建生命周期模型,标准化构建过程3.管理分布的项目信息,版本控制系统,轻松获取项目文档,测试报告,静态分析报告,版本日志报告等4.极限编程(XP)
LogicOrbit
LogicOrbit
Lv1
愿你有坚定立场穿过风沙和迷惘。
文章
2
粉丝
0
获赞
0