Maven基础之项目管理构建

1.Maven简介

Maven的主要功能是,通过在pom.xml的<dependency>指定要在项目中使用的JAR库名称和版本,可以自动下载在外部站点上集中管理的JAR ,并在本地使用该JAR进行构建可以。

Maven构建项目的优势

在传统的Web项目中,每个项目所需要的jar包文件都配置在WEB-INF下的lib目录下,如果所需要的jar包文件很多,则项目会很大,关键是jar包可能产生冲突,这才是要命的!web下几十行的报红,对于俺这种菜鸟来说简直是…Maven的优势就在于能够复用jab包,构建了统一的Web目录结构,方便项目的管理和部署。

Maven 中的有两大核心:

  • 依赖管理:对 jar 的统一管理(Maven 提供了一个 Maven 的中央仓库https://mvnrepository.com/,当我们在项目中添加完依赖之后,Maven 会自动去中央仓库下载相关的依赖,并且解决依赖的依赖问题)

  • 项目构建:对项目进行编译、测试、打包、部署、上传到私服等

2.Maven安装及配置

安装仓库配置出门左转

【Maven安装配置及在idea中配置】

Maven目录结构

bin目录下

boot目录

config

在这里插入图片描述

lib

3.仓库repository

运行原理

运行Maven的时候,Maven所需要的任何构件首先从本地仓库获取。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

关于如何将本地仓库修改到别的盘符,移步链接【Maven安装配置及在idea中配置】

本地默认仓库位置

C:\Users\YourPC\.m2

在这里插入图片描述
创建Maven项目,一定要保持网络畅通,否则一些依赖文件无法下载会导致项目报错!!!

4.Maven项目标准目录结构

在这里插入图片描述

  • src/ main / java目录 核心代码部分

  • src/ main / resources 配置文件部分

  • src/ test / java目录 测试代码部分

  • src/ test / resources 测试配置文件

  • src/ main / webapp页面资源,js,cs,图片等等

5.Maven常用命令

mvn -version:显示版本信息

mvn clean:将编译过的target文件删除,清除产生的项目

mvn compile:编译src-main下源代码,并放置到target下

mvn test-compile:编译测试代码

mvn test:运行测试src下的代码

mvn package:打包

mvn install:打包项目并且安装到本地仓库

mvn:deploy:发布项目

【idea中集成的mvn命令】


  1. 创建maven项目:mvn archetype:generate
  2. 验证项目是否正确:mvn validate
  3. 只打jar包:mvn jar:jar
  4. 生成源码jar包:mvn source:jar
  5. 产生应用需要的任何额外的源代码:mvn generate-sources
  6. 运行检查:mvn verify
  7. 生成idea项目:mvn idea:idea
  8. 显示maven依赖树:mvn dependency:tree
  9. 显示maven依赖列表:mvn dependency:list

web项目相关命令

  1. 启动tomcat:mvn tomcat:run
  2. 启动jetty:mvn jetty:run
  3. 运行打包部署:mvn tomcat:deploy
  4. 撤销部署:mvn tomcat:undeploy
  5. 启动web应用:mvn tomcat:start
  6. 停止web应用:mvn tomcat:stop
  7. 重新部署:mvn tomcat:redeploy
  8. 部署展开的war文件:mvn war:exploded tomcat:exploded

6.项目对象模型pom.xml

Maven有三个内置的构建生命周期分别为:cleandefaultsite

我们一般使用的是默认的生命周期

Maven 项目,如果需要使用第三方的控件,都是通过依赖管理来完成的。这里用到的一个东西就是 pom.xml文件,概念叫做项目对象模型(POM,Project Object Model),我们在 pom.xml 中定义了 Maven 项目的形式,所以,pom.xml 相当于是 Maven 项目的一个地图。

这个地图中都涉及到哪些东西呢?

Maven 坐标

在这里插入图片描述

  • dependencies:添加项目需要的 jar 所对应的 maven 坐标

  • dependency:一个 dependency 标签表示一个组件的坐标

  • groupId:公司名

  • artifactId:相当于在一个组织中项目的唯一标识符。

  • version:一个项目的版本

  • scope:表示依赖范围

jar包冲突问题

maven所需要的jar包存放在本地仓库,但是在我们使用jspservlet时,项目有可能不识别HttpServlet而报红,此时我们导入相关依赖到 pom.xml 中,虽然解决了问题。但是将跑起来之后,会出现jar包冲突的问题…

这是为什么呢?

因为在本地仓库中和此项目中,出现了两个相同的重名jar包文件,本地项目中有servlet包,但是由于编译器不识别我们又导入了一份servlet包,导致冲突。


所以为了解决这样的问题,需要在冲突的jar包文件上加上作用域provided,让它只在编译时起作用

<dependency>
    <groupId>javax.servlet.jsp</groupId>

    <artifactId>javax.servlet.jsp-api</artifactId>

    <version>2.2.1</version>

    <scope>provided</scope><!--只在编译时起作用-->

</dependency>

pom.xml参考

在这里插入图片描述


【参考文章】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值