IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Maven知识学习 -> 正文阅读

[Java知识库]Maven知识学习

1 Maven 入门

1.1 概述

1.1.1是什么?

传统的项目管理状态分析:
当我们在开发项目的时候,由于多个人员开发不同的模块,各个人员使用的版本的不一样,导致出现错误,jar包不统一,jar包不兼容,工程审计维护过程操作繁琐等问题。为了解决这个问题,出现了maven的技术。

maven本质: 是一个项目管理工具,将项目开发和管理过程抽象城一个项目对象模型(Project Object Model)

1.1.2为什么?

  1. 跨平台
  2. 最大的消除了构建的重复
  3. 可以帮助我们标准化构建过程
  4. 一个依赖管理工具和项目信息管理工具
  5. 提供了中央仓库(提供里各种工具,需要网络支持)
  6. 对于项目目录结构和测试用例的命名都有规范

1.1.3主要功能

  • 依赖管理
    一个项目对应一个pom.xml文件,通过pom对对项目进行管理,那怎么管理的呢;靠依赖管理:依赖管理就是项目的资源,你的项目可以成为别人项目的资源,别人的项目也可以成文你项目的资源;那资源在哪呢?需要使用它,就需要在电脑上找到,这个资源就在本地(仓库),我们的电脑无法给所有人访问,所有需要将所有的公共资源提取出来,保存到私服中,也可以叫私服仓库;那私服仓库的东西从哪里来呢——中央仓库。
  • 项目构建

1.1.4maven的安装步骤?

IDEA默认集成了maven

  1. maven下载地址:https://maven.apache.org/download.cgi
  2. IDEA工具:2020版本以前的支持maven3.6是可以的;2021,2022支持maven3.8.5版本
  3. 安装和配置环境
    maven环境安装和配置

1.2Maven基础概念

1.2.1仓库

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

仓库分类:

  1. 本地仓库:自己电脑上存储的资源,连接远程仓库获取资源
  2. 远程仓库:非本计算机电脑上的仓库,本地仓库提供资源
    • 中央仓库:Maven团队维护,存储所有资源的仓库
    • 私服:部分/公司范围内存储资源的仓库,从中央仓库获取资源

私服的作用:

  • 保存具有版权的资源,包含购买的或者自主研发的jar(中央仓库中的jar都是开源的,不能存储具有版权的资源)
  • 一定范围内共享资源,仅对内部开放,不对外共享。

1.2.2坐标

什么是坐标:maven中的坐标是用与描述仓库中资源的位置
坐标的主要组成:

  • groupID:定义当前Maven项目隶属组织名称(通常是域名的反写,例如:org.mybatis)
  • artifactID:定义当前Maven项目的名称(通常是模块名称,例如CRE)
  • version:定义当前项目版本号

Maven坐标的作用:

  • 使用唯一标识:唯一性定位资源位置,通过表示可以将资源的识别与下载工具交由机器完成

1.3依赖管理

1.3.1依赖管理常用的标签

配置依赖:事例如下

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

1.3.2依赖传递

  • 直接依赖:当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖资源的资源如果依赖其他的资源,当前项目间接依赖其他资源
    文宇解说: 两个项目,第一个项目依赖了项目二,当项目二添加了一个依赖,这个资源也会跑到项目一;

1.3.3依赖传递的冲突问题

假设项目一依赖了junit 4.14版本,同时项目一也依赖了项目二,项目二依赖了junit4.13版本,根据依赖的传递性,项目一也就同时依赖了junit4.13版本和junit4.14版本;那问题来了,项目一依赖的是哪一个版本呢?这就是依赖传递的冲突问题。

解决方式:

  • 路径优先:当依赖出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。
  • 声明优先:当资源在相同层级已离开时配置顺序靠前的覆盖配置顺序靠后的。
  • 特殊优先:当统计配置相同资源的不同版本,后配置的覆盖优先配置的。
    在这里插入图片描述

1.3.4可选依赖

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

1.3.5排除依赖

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

1.3.6依赖范围

  • 依赖的jar默认情况下可以在任何地方使用,可以通过scope标签设定器作用范围
  • 作用范围
    • 主程序范围有效(main文件范围内)
    • 测试程序范围有效(test文件夹范围有效)
    • 是否参与打包(package指令范围内)
依赖范围对于编译
classpath
有效
对于测试
classpath
有效
对于运行时
classpath有效
例子
compileYYYspring-context
test-Y-junit
providedYY-servlet-api
runtime-YYjdbc驱动
systemYY-本地,maven仓库之外的类库

依赖范围的传递性
在这里插入图片描述

1.4生命周期与插件

compile(编译)–>test(测试)—>package(打包)—>install(安装)

1.4.1项目构建生命周期

Maven对项目构建的生命周期划分为3套

  1. clean:清理工作
  2. default:核心工作,例如编译,测试,打包,部署等
  3. site:产生报告,发布站点等

插件:

  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认maven在各个生命周期上绑定由预设的功能
  • 通过插件可以自定义其他功能,事例如下:
    Tomcat7的插件:
<!--构建-->
  <build>
    <!--设置插件-->
    <plugins>
      <!--具体的插件-->
      <plugin>
        <groupId>org. apache . maven. plugins</ groupId>
        <artifactid>maven- source -plugin</ artifactId>
        <version>2.2.1</version>
        <executions>
          <execution>
            <goals>
              <goal>jar</goal>
            </goals>
            <phase>generate-test-resources</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

2 项目实例:使用IDEA创建一个web的maven工程

步骤

1.打开IDEA,新建project,如图所示。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
完成后的结构如下:
在这里插入图片描述

2.设置test(测试),resources(资源文件夹)文件夹。

在这里插入图片描述

在这里插入图片描述
新建文件夹如下图所示
在这里插入图片描述

为文件夹配置main 文件下的java 设置成 source文件夹,resource蛇者成resource文件夹,test文件夹下的Java设置成Tests文件夹,resources设置成Test resources文件夹,如下图所示。完成后点击ok.
在这里插入图片描述

3.编写index.jsp

<html>
<body>
<h2>Hello Maven!</h2>
</body>
</html>

4.配置pom.xm文件

添加tomcat服务器插件,进入mvnrepository,搜索tomcat maven,查找到tomcat maven包

在这里插入图片描述

进入这个包的第一个,使用2.1版本,单击进入这个版本,复制插件代码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置pom.xml文件,删除一些不需要的东西,添加Tomcat7插件,代码如下;

<?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.hai</groupId>
  <artifactId>Maven_webProject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>Maven_webProject Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
  
  <dependencies>
  </dependencies>
  
  <build>
    <plugins>
      <plugin>
        <!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
      </plugin>
    </plugins>
  </build>

</project>

刷新maven后可以看到tomcat7插件,如下图。
在这里插入图片描述
在这里插入图片描述

5.启动运行

选择tomcat7的tomcat7:run的运行命令,服务器就启动了,单击运行的连接,可以在浏览器上看到运行结果。
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

6.配置运行(扩展)

单击Add configuration 添加maven运行,配置命令为Tomcat7:run,点击IDEA的运行,就可以启动服务器。配置如下。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:26:14  更:2022-05-09 12:29:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:16:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码