26-maven基础

maven介绍和环境配置

1.maven概念介绍

maven是一款项目管理工具,可以帮助我们自动构建项目(也叫项目构建:编译、测试、打包、部署、运行的操作),可以帮助我们统一管理依赖(也叫依赖管理),可以统一项目结构。

2.Maven作用

  • 项目构建:提供标准的,跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题
  • 统一开放结构:提供标准的,统一的项目结构

Maven 可以帮助 程序员来 做项目的代码 管理

每个 maven 工程都有一个 核心的配置文件 叫做 pom.xml 文件,这个文件 就代表着当前的 maven 工程 .

3.下载安装和环境变量

  • 官网:http://maven.apache.org/

  • 下载地址:http://maven.apache.org/download.cgi

  • 环境变量:

    • 配置JAVA_HOME(省略)

    • 配置MAVEN_HOME,配置方式和JAVA_HOME完全一样,配置好了之后要在path中使用

      【第一步】:配置MAVEN_HOME,名字叫MAVEN_HOME,值:c:/Applications/develop/apache-maven-3.6.1

      【第二步】:配置path,值是:%MAVEN_HOME%\bin

在黑窗口扣中敲 mvn -v , 如果提示下面的信息则表示 配置的没有问题

在这里插入图片描述

maven的基本概念

1 仓库

在这里插入图片描述

  • 本地仓库:本质就是自己电脑上的一个文件夹,里面存储了我们平时自己使用的jar包
  • 私服仓库:是远程仓库的一种,是在公司局域网内的一个仓库,局域网内容的所有用户共享。
  • 中央仓库:是远程仓库的一种,有maven团队维护,服务器在国外,访问很慢。

访问的优先级问题?

​ maven优先访问本地仓库,如果本地仓库有jar包,直接获取。如果本地仓库没有,并且没有配置私服仓库,那么直接从中央仓库获取jar包。如果配置了私服仓库,那么就会去私服仓库获取,如果私服仓库没有就去中央仓库获取。只要访问了中央仓库,jar包都会从中央仓库自动下载到私服仓库或者本地仓库,方便下一次使用。

本地仓库-------->私服仓库--------->中央仓库

2 坐标

作用:jar包在仓库中位置的唯一标识,通过这个标识就可以找到唯一的一个jar包。

查找jar包坐标的仓库网址:http://mvnrepository.com/

3 仓库配置【重要】

3.1 本地仓库

在这里插入图片描述

3.2 阿里中央仓库镜像

在这里插入图片描述

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

第一个maven程序(重要)

2 idea集成maven工具

close project—>settings—>搜索“maven”

在这里插入图片描述

集成成功之后,可以新建project。如果是使用之前的project,那么需要给之前的project重新集成maven,做法为:file—>settings—>搜索“maven”,配置同上。

3 创建Java项目

使用模版

在这里插入图片描述

在这里插入图片描述

不使用模板【吐血推荐】

在这里插入图片描述

在这里插入图片描述

如果右下角有如下弹框,选中自动导入:

在这里插入图片描述

4 创建web项目

使用模板

在这里插入图片描述

不使用模板

【第一步】:做法和“不使用模板”创建Java项目一致,但是需要手动添加webapp目录并且标记:

在这里插入图片描述

【第二步】:在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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.itheima</groupId>
  <artifactId>maven_web2</artifactId>
  <version>1.0-SNAPSHOT</version>

  <!--默认是打jar包,web项目需要打war包,必须添加-->
  <packaging>war</packaging>

</project>

5 配置插件模板以及tomcat7插件

在这里插入图片描述

<!--构建-->
<build>
  <!--插件-->
  <plugins>
    <!--配置Tomcat7.0插件 -->
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <port>8080</port>
        <path>/</path>
        <uriEncoding>utf-8</uriEncoding>
      </configuration>
    </plugin>
  </plugins>
</build>

6 在maven的settings.xml中配置全局的jdk1.8插件

【第一步】:在profiles标签中配置jdk1.8插件

<profile>
  <!-- 定义的编译器插件 ID,全局唯一 -->
  <id>jdk-1.8</id>
  <!-- 插件标记,activeByDefault 默认编译器,jdk提供编译器版本 -->
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>1.8</jdk>
  </activation>
  <!-- 配置信息 source-源信息,target-字节码信息,compilerVersion-编译过程版本 -->
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    <maven.compiler.encoding>utf-8</maven.compiler.encoding>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
</profile>

【第二步】:在activeProfiles标签中激活刚刚的jdk-1.8插件

<activeProfiles> 
  	<!--激活jdk-1.8的配置,jdk-1.8是上面插件的id-->
	  <activeProfile>jdk-1.8</activeProfile>
</activeProfiles>

依赖管理

4.1 依赖配置和依赖传递【了解】

  • 依赖管理-如何配置依赖

    • 依赖指当前项目运行所需要的所有jar,一个项目可以设置多个依赖
    • 格式
    <!--设置当前项目所需要的多有jar-->
        <dependencies>
            <!--设置具体的依赖-->
            <dependency>
                <!--依赖所属群组id-->
                <groupId>junit</groupId>
                <!--依赖所属项目id-->
                <artifactId>junit</artifactId>
                <!--依赖版本号-->
                <version>4.12</version>
            </dependency>
        </dependencies>
    
  • 依赖传递以及依赖冲突

    • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
    • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
    • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
  • 可选依赖

    • 可选依赖指对外隐藏当前所依赖的资源–不透明
    <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.12</version>
        <!--可选依赖-->
         <optional>true</optional>
    </dependency>
    
  • 依赖排除

    • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本——不需要
    <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.12</version>
        <!--依赖排除-->
         <exclusions>
            <exclusion>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
             </exclusion>
          </exclusions>
    </dependency>
    

4.2 依赖范围

  • 依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
  • 作用范围
    • 主程序范围有效(main文件夹范围有效)
    • 测试程序范围有效(test文件夹范围有效)
    • 是否参与打包(package指令范围内)
scope主代码测试代码打包示例
compile(默认)YYYlog4j
testYjunit
providedYYservlet-api和jsp-api
runtimeYjdbc(必须添加依赖)

生命周期与插件

  • 生命周期分成三部分

    • clean:清理工作
    • default:核心工作,例如编译,测试,打包,部署等
    • site:产生报告,发布站点等
  • 默认生命周期

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值