Maven详细笔记

目录

1、什么是maven

2、如何配置maven

3、Maven项目的基本结构

4、maven命令

5、Maven中仓库的概念

6、在idea中配置maven

7、配置scope属性的作用

scope的应用范围包含下列几种


1、什么是maven

Maven官网

maven是apache公司推出的一款项目自动化构建、管理工具

maven作用主要体现

1、通过一组命令对项目进行自动化构建、管理
2、它可以对项目中的依赖进行统一管理
3、通过它可以构建聚合项目(一个完整的工程有很多小模块构成,每一个小模块就是一个独立的应用)

2、如何配置maven

maven不需要安装,解压缩即可使用,但要注意需要与idea的版本配套使用
2021之前的idea----->3.5.2
2021.6月以后------->3.6.3

配置步骤

1、在本地计算机中创建目录。充当maven的本地仓库,用于管理所有的依赖与插件
​
2、将maven解压
​
3、修改maven文件中conf目录下的settings.xml文件,进行maven本地仓库的配置
​
    a、修改本地仓库位置
        <localRepository>F:/D118MavenFile/Maven</localRepository>
//如果老马发了maven的包,就直接改这个位置    
    
4、修改maven的中央仓库地址
    如果使用某个依赖时,如果本地没有,maven会自动连接中央仓库进行下载,将maven仓库镜像改为阿里云
           <!-- 阿里云中央仓库 -->
            <mirror>
                <id>nexus-aliyun</id>
                <mirrorOf>central</mirrorOf>
                <name>Nexus aliyun</name>
                <url>http://maven.aliyun.com/nexus/content/groups/public</url>
            </mirror>
​
5、在系统环境变量中配置Maven
    
    
6、测试maven是否完成
    cmd---> mvn -v

3、Maven项目的基本结构

项目名称

      src---------------------------它包含所有的代码及配置文件
            main----------------------它主要是包含运行时的java代码及配置文件
                java-------------------------它主要包含运行时的java源文件
                resources--------------------它主要包含运行时的配置文件
            test---------------------它主要是包含测试时的java代码及配置文件
                java-------------------------它主要包含测试时的java源文件
                resources--------------------它主要包含测试时的配置文件
        
      pom.xml-----------------------它是Maven它是maven项目的核心配置文件,它                                     用于配置maven的各种依赖以及各种maven插件

4、maven命令

首先通过cmd进入当前项目所在目录

1、mvn compile
    作用:将java源代码编译成字节码文件,生成target目录
    (所有编译后的文件都会包含在该目录中)
​
2、mvn clean
    作用:将编译后的target目录清除掉
​
3、mvn test
    作用:运行src/test/java中的测试代码,并且生成测试报告
​
4、mvn package
    作用:将项目打包(可以打包成war,jar)
​
5、mvn install
    作用:将打好的jar安装到本地maven仓库中,其他项目就可以引用这些jar

注意事项

所有maven命令在第一次执行时,都需要联网下载命令相关的插件才能使用(下一次就好)

5、Maven中仓库的概念

Repository:仓库

作用:管理各种依赖(jar)

maven中的仓库主要有三种:

1、本地仓库  
    位置: 在当前计算机中的某一个目录中
    作用:提供依赖给当前计算机中的所有项目使用
​
2、私服
    位置: 一般是在公司的服务器中
    作用:提供依赖给当前公司的所有开发者使用
​
3、中央仓库:
    位置:在互联网上,由一些大的软件公司在维护
    作用:给全世界的开发人员提供依赖

6、在idea中配置maven

全局配置

settings---->Build, Execution, Deployment-->Build Tools-->Maven
    
    找到maven的安装目录  F:/D118MavenFile/mavenbao/apache-maven-3.5.2  
2、在idea中创建maven项目时,需要根据maven的骨架生成maven项目结构,
    默认情况下,maven会联网查找骨架生成maven项目结构
            存在的问题:
                1、创建项目就需要联网
                2、如果每一次创建项目都联网生成骨架会特别慢 
        @@@所以,我们一般将maven配置成根据本地骨架生成maven的项目结构
​
            
    配置步骤:
        1、在网上下载maven的骨架配置文件 archetype-catalog.xml
        
        2、将该文件放到maven的本地仓库的指定目录下:
            注意:如果使用的是我的本地仓库,仓库中就已经包含有该方法
            org\apache\maven\archetype\archetype-catalog\3.0.1目录
​
            @@@ 注意,如果目录不存在,直接创建一个即可
​
        3、在idea中配置如下代码:
            
        settings-->Build.execution,deploment-->build Tools--maven--Runner
                -DarchetypeCatalog=local
//玛德 这前面的-也要带上就是因为掉了杠报错一上午

在idea中创建一个maven工程

idea搜索快捷键:ctrl+f

@@@@@@@@@创建基于maven的web工程
1、创建maven的web应用 
    选择骨架的快捷键: org.apache.maven.w
​
2、修改项目结构
    main目录缺少java,resources可以自己新建
​
3、修改jsp
​
4、导入servlet-api的依赖才能创建servlet
​
​
   <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <!--指定依赖的有效范围-->
      <scope>provided</scope>
    </dependency>
​
​
5、创建servlet
​
​
6、编写页面显示结果 
    
    姓名是:${requestScope.name} ---------结果会显示表达式,并不会解析
​
    @@@@@原因是因为:maven工程中,jsp页面会默认忽略掉el表达式不会进行解析
​
    解决方案:在jsp页面的指令中配置如下代码即可
​
    <%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" language="java" %>
        
7、如果要使用标签库,也需要导包
    standerd
    jstl

7、配置scope属性的作用

   <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <!--指定依赖的有效范围-->
      <scope>provided</scope>
    </dependency>
作用:它用于指定当前依赖在哪些范围中有效

scope的应用范围包含下列几种

如果不指定scope的范围,默认是compile

编译阶段测试阶段运行阶段例子
compileYYYspring-core
providedYY-servlet-api
test-Y-Junit
runtime-YYJDBC驱动
systemYY-本地Maven仓库之外
    tomcat目录中本身就包含有servlet-api这个依赖,但这个依赖只会在运行阶段才加载,编译阶段是不会加载的,为了让程序通过编译,所以我们需要导入servlet-api的依赖
​
    但是如果将我们手动导入的依赖应用范围设为compile,它会在“编译阶段”,“测试阶段”,“运行阶段”都会使用这个依赖,而tomcat本身自带的servlet-api的依赖也会在运行阶段加载,此时就会导致冲突出错
    
为了解决这个问题:我们需要设置依赖仅在编译、测试阶段使用,运行阶段不使用 

一般在Tomact中已经包含的依赖都要设置provided,来避免冲突

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

arjunna

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值