MAVEN教程--个人学习笔记

目录

Maven 3.6.3 的下载、安装、配置、检测(详细讲解)_【官方推荐】、唐城的博客-CSDN博客_maven3.6.3安装

1.1 maven概念

1.2 maven作用

1.3 maven仓库

1.4 maven创建maven项目

1.5 idea创建web项目

1.6 依赖配置

1.7 依赖管理

1.7.1 依赖传递

1.7.2 依赖传递冲突问题

1.7.3 可选依赖

1.7.4 排除依赖

1.7.5 依赖范围

1.8 生命周期与插件


Maven 3.6.3 的下载、安装、配置、检测(详细讲解)_【官方推荐】、唐城的博客-CSDN博客_maven3.6.3安装

1.1 maven概念

传统构建项目遇到的问题:

  1. jar包不统一,jar包不兼容使用maven
  2. 工程升级维护过程操作繁琐

Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)

POM:项目对象模型

1.2 maven作用

项目构建:提供标准的,跨平台的自动化项目构建方式

依赖管理:方便快捷的管理项目以来的资源(jar包),避免资源间的版本冲突问题

统一开发结构:提供标准的,统一的项目结构

1.3 maven仓库

仓库:用于存储资源,包含各种jar包

本地仓库

远程仓库:

        私服仓库:部门/公司范围内存储资源的仓库,从中央仓库获取资源,可放一些具有版权的仓库

        中央仓库:MAVEN团队维护,存储所有资源的仓库,开源jar包

Maven仓库中用于描述仓库中资源位置

https://repo1.maven.org/maven2/junit/junit/4.13.2/

Maven坐标主要组成

grouId:定义当前Maven项目隶属组织名称

artifactID:定义当前Maven项目名称

version:定义当前项目版本号

mvnrepository.com 网站可以直接复制相关坐标代码

1.4 maven创建maven项目

点击右上角的Project Structure->Modules

改变文件属性右键文件Mark Directory as --

src中   java:Sources   resources:Resources

test中java:Test   resources:Test:Resources

1.5 idea创建web项目

Project->maven->选择SDK和Create from archetype

输入webapp->OK

idea2019.3  无法使用3.8.5   现配置3.6.3

引入spring-context 依赖才有spring config选项

 <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
  </dependencies>

构建tomcat,可以通过依赖的方式构建

<!-- 构建tomcat -->
  <build>
    <!-- 设置插件 -->
    <plugins>
      <!-- 具体插件位置 -->
      <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.1</version>
          <configuration>
            <port>80</port>
            <path>/</path>
          </configuration>
      </plugin>

    </plugins>
  </build>

点击edit configarations,选择maven,点击添加,

name:启动服务器      command line:   tomcat:run        OK

1.6 依赖配置

依赖指当前项目所需的jar,一个项目可以设置多个依赖

<dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
</dependencies>

1.7 依赖管理

1.7.1 依赖传递

依赖具有传递性:

直接依赖:在当前项目中通过依赖配置建立的依赖关系

间接依赖:被资源的资源如果依赖其他资源,当前项目依赖其他资源

项目3的坐标

<groupId>com.it3</groupId>
  <artifactId>web01</artifactId>
  <version>1.0-SNAPSHOT</version>

在项目2中把项目3的坐标用依赖方式写入就可以了

<dependencies>
        <dependency>
            <groupId>com.it3</groupId>
          <artifactId>web01</artifactId>
          <version>1.0-SNAPSHOT</version>
        </dependency>
</dependencies>

1.7.2 依赖传递冲突问题

路径优先:当依赖中出现相同的资源是,层级越深,优先级越低,层级越浅,优先级越高

声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的

特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

1.7.3 可选依赖

可选依赖指对外隐藏当前所选依赖的资源---不透明

项目3
<dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.12</version>
      <optional>false</optional><!--自己的东西不被别人用,设false 项目3被项目2使用不显示log4j-->
</dependency>

1.7.4 排除依赖

排除依赖指主动断开以来的资源,被排除的资源无需指定版本---不需要

项目2

<dependency>
      <groupId>com.it</groupId>
      <artifactId>web02</artifactId>
      <version>1.0-SNAPSHOT</version>
      <exclusions>                         <!--取其精华去其糟粕,排除项目3中的log4j,主动排除-->
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
      </exclusions>

</dependency>

1.7.5 依赖范围

依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围

  1. 主程序范围有效(main文件夹范围内)
  2. 测试程序范围有效(test文件夹范围内)
  3. 是否参与打包(package指令范围内)

<dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.12</version>
      <scope>runtime</scope>
</dependency>

1.8 生命周期与插件

 Maven对生命周期划分为3套

  • clean:清除工作
    • pre-clean    执行一些需要在clean之前完成的工作
    • clean          移除所有上一次构建生成的文件
    • post-clean  执行一些需要在clean之后立刻完成的工作
  • default:核心工作,例如编译,测试,打包,部署
  • site产生报告,发布站点

 插件

<build>
        <plugins>
            <plugin>
                <!--插件:对源码打jar包-->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>jar</goal>
                            <goal>test-jar</goal>         <!--对test打-->
                        </goals>
                        <phase>generate-test-resources</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值