[maven]maven从小白到专家(代码片段)

Spring-_-Bear Spring-_-Bear     2022-12-03     548

关键词:

Maven

一、小白入门

1. 自动部署流程图

2. maven 构建过程

MavenApache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具,maven 本身使用 Java 语言进行开发。构建过程包含的主要环节:

  1. 清理:删除上一次构建的结果,为下一次构建做好准备
  2. 编译:Java 源代码编译成 .class 字节码文件
  3. 测试:运行提前准备好的测试程序
  4. 报告:针对刚才的测试结果生成一个全面的报告信息
  5. 打包:java 工程 -> jar 包;web 工程 -> war
  6. 安装:把一个 maven 工程经过打包操作生成的 jar 包或 war 包存入 maven 仓库
  7. 部署:将打包生成的 jar 包或 war 包部署到服务器
    7.1 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
    7.2 部署 war 包:借助相关 maven 插件,如 cargo 将 war 包部署到 tomcat 服务器上运行

3. maven 总体工作机制

4. maven 安装初始化配置

  1. 在 maven 安装目录的 conf/.setting.xml 中配置本地 maven 仓库
<!-- 配置本地 maven 仓库-->
<localRepository>D:/Software/Maven/repository</localRepository>
  1. 配置阿里云镜像仓库,提高下载速度
<mirrors>
    <!-- 配置阿里云镜像仓库 -->
    <mirror>
        <id>nexus-aliyun</id>
        <name>Nexus aliyun</name>
        <mirrorOf>central</mirrorOf>
        <url>https://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>
  1. 配置 maven 仓库使用的 JDK 版本
<!-- 配置 maven 仓库使用的 JDK 版本 -->
<profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <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>
    </properties>
</profile>
  1. 配置环境变量 MAVEN_HOMEPATH

5. maven 坐标说明

使用由 groupIdartifactIdversion 标签构成的坐标可以唯一确定一个 maven 依赖

  1. groupId:公司或组织的 id(公司或组织域名的倒序,通常也会加上项目名称)
  2. artifactId:一个项目或是项目中的一个模块的 id(模块的名称,将来作为 maven 工程的工程名)
  3. version:版本号(SNAPSHOTRELEASE

6. archetype 命令创建 maven 工程

mvn archetype:generate:mvn 是主命令,后两个命令是子命令,archetype 表示使用的插件,generate 表示使用插件的目的

7. pom.xml 解读

POM(Project Object Model):项目对象模型,将整个工程抽象为一个模型

<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">
    <!-- 从 maven2 开始固定值 4.0.0,代表当前 pom.xml 所采用的标签结构 -->
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bear.maven</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 当前 maven 工程打包的方式,若取值为 pom,则说明这个工程是用来管理其它工程的工程 -->
    <packaging>jar</packaging>

    <name>test</name>
    <url>http://maven.apache.org</url>

    <!-- 自定义属性值 -->
    <properties>
        <!-- 构建过程中读取源码时采用的字符集 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!-- 配置当前依赖的作用范围 -->
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

8. 常用构建命令

运行 maven 中和构建操作相关的命令时,必须进入到 pom.xml 文件所在的目录,否则会报错

  1. 主程序编译:mvn compile -> target/classes
  2. 测试程序编译:mvn test-compile -> target/test-classes
  3. 测试命令:mvn test
  4. 打包命令:mvn package
  5. 安装命令:mvn install,安装的效果是将本地构建过程中生成的 jar 包存入本地 maven 仓库,这个 jar 包在 maven 仓库中的路径是根据它的坐标信息生成的
  6. install 过程中跳过测试:mvn install -Dmaven.test.skip=true

9. 生成 web 工程

生成 web 工程:mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4

10. 查看工程中的依赖

  1. 查看当前工程依赖的 jar 包列表:mvn dependency:list
  2. 以树形方式显示当前工程依赖列表:mvn dependency:tree

11. scope 设置依赖作用范围

scope 指定依赖的作用范围:compile、test、provided、system、runtime、import

scopemain 目录(空间)test 目录(空间)开发过程(时间)部署到服务器(时间)
compile有效有效有效有效
provided有效有效有效无效
test无效有效有效无效

12. 依赖传递性

在 A 依赖 B,B 依赖 C 的前提下(A->B->C),C 是否能够传递到 A,取决于 B 依赖 C 时所使用的依赖范围

  1. 若 B 依赖 C 时使用 compile 范围,则 C 能够传递到 A
  2. 若 B 依赖 C 时使用 testprovided 范围:不能传递,需要这样的 jar 包时,必须在需要的地方明确配置依赖

13. 排除依赖以解决冲突

当 A 依赖 B,B 依赖 C 并且 C 可以传递到 A 时,A 不想依赖 C 以避免产生 jar 包冲突,需要在 A 中把 C 排除掉。配置方式:在具体依赖的 dependecy 标签中使用 exclusions 标签排除具体依赖

<!-- 如工程依赖 springframework core 时需要排除 commons-logging 依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.14</version>
    <!-- 使用 excludes 标签配置依赖的排除	-->
    <exclusions>
        <!-- 在 exclude 标签中配置一个具体的排除 -->
        <exclusion>
            <!-- 指定要排除的依赖的坐标(不需要写 version) -->
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

14. maven 父子工程

  1. maven 工程之间 A 工程继承自 B 工程,本质上就是 A 工程的 pom.xml 中配置继承了 B 工程中的 pom.xml。使用继承工程的好处是:可以在父工程中统一管理项目中的依赖信息,具体来说是管理依赖信息的版本
  2. 只有打包方式为 pom 的 maven 工程才能够管理其它 maven 工程,打包方式为 pom 的 maven 工程中不写具体业务代码,专门用于管理其它 maven 工程
  3. 在父工程中统一管理修改版本信息,以实现父工程一次修改,所有子工程版本依赖信息跟着变化
<!-- 使用 dependencyManagement 标签配置对依赖的管理 -->
<!-- 被管理的依赖并没有真正被引入到子工程,子工程中使用到具体依赖时需要明确配置,不需要写版本号 -->
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
	</dependencies>
</dependencyManagement>

二、普通开发人员(前置知识:SSM)

  1. 功能演示

  2. 架构的概念

  3. 正式创建工程

  4. 如何选择依赖

  5. 组件依赖列表

  6. 建包

  7. 物理建模

  8. 逻辑建模

  9. 数据库连接信息

  10. JdbcUtils 创建数据源对象

  11. JdbcUtils 事务代码分析

  12. JdbcUtils 对象跨方法传递分析

  13. JdbcUtils ThreadLocal 介绍

  14. JdbcUtils 工具方法实现

  15. JdbcUtils 测试

  16. BaseDao 泛型说明

  17. BaseDao 具体方法

  18. BaseDao 测试

  19. 子类 Dao

  20. 事务控制总体思路

  21. 事务过滤器

  22. TransactionFilter 类

  23. 注册 TransactionFilter 类

  24. 事务控制注意事项

  25. 表述层 ViewBaseServlet 服务器端渲染

  26. Thymeleaf 简要工作机制

  27. 逻辑视图的概念

  28. 创建 ViewBaseServlet 类

  29. 配置初始化参数

  30. ModuleBaseServlet

  31. 辅助功能

  32. 显示首页流程图

  33. 显示首页代码实现

  34. 登录流程图

  35. 创建 AuthServlet 类

  36. 创建 EmpService 和登录失败异常

  37. AuthServlet 登录逻辑

  38. 登录完成并测试

  39. 退出登录

  40. 显示奏折列表流程图

  41. 创建组件

  42. 显示奏折列表 java 代码

  43. 登录信息部分

  44. 初步显示信息

  45. 调整颜色

  46. 和登录成功对接

  47. 显示奏折详情流程图

  48. 调整超链接

  49. 显示奏折详情 java 代码

  50. 页面显示

  51. 奏折已读

  52. 调整表单样式

  53. 批复奏折

  54. 登录检查流程图

  55. 登录检查代码实现

  56. 打包部署

  57. 第一只锦囊小结

  58. 建立工程间关系

  59. 各工程配置 POM

  60. 逆向工程

  61. 配置并测试数据源

  62. 整合 Mybatis

  63. 事务控制

  64. 配置 web.xml

  65. 显示首页

  66. 辅助功能

  67. 登录功能

  68. 整理文档

三、资深开发人员(前置知识:微服务)

  1. 第三只锦囊的说明
  2. 各工程总体说明
  3. 创建工程、建立依赖关系
  4. 父工程管理依赖
  5. util 模块
  6. 创建实体类
  7. 对外暴露接口
  8. service 层
  9. controller 层
  10. 主启动类
  11. yml 配置文件
  12. 准备环境
  13. 显示首页
  14. 登录验证流程图
  15. 装配远程接口说明
  16. 装配远程接口分析
  17. 验证方法
  18. 登录验证完成并测试
  19. 部署运行
  20. 修改 MySQL 连接信息
  21. 在总体聚合工程上执行 install
  22. 添加 SpringBoot 的打包插件
  23. 执行 SpringBoot 打包插件的打包命令
  24. 微服务启动
  25. Maven 是一款项目管理工具
  26. POM 的四层体系
  27. 属性的声明和引用
  28. build 标签本身详解
  29. build 标签典型引用:JDK 版本
  30. Spring Boot 插件和 MBG 插件
  31. 依赖补充:其它三个依赖范围
  32. 可选依赖
  33. 版本仲裁机制
  34. 自定义插件:创建插件
  35. 使用插件
  36. profile 概述
  37. 配置方式
  38. 激活方式
  39. 实例演示
  40. 资源属性过滤
  41. Nexus 服务器安装和启动
  42. 仓库类型介绍
  43. 通过 Nexus 下载第三方 jar 包
  44. 部署 jar 包及获取别人部署的 jar 包
  45. 配置 Nexus 仓库举例
  46. jar 包冲突概述
  47. jar 包冲突本质
  48. 解决办法概述
  49. 解决办法:IDEA 的 Maven helper 插件
  50. 解决办法:Maven 的 enforcer 插件
  51. 体系外 jar 包导入
  52. 导出课件

1.springcloud--从单体架构到微服务架构代码拆分(maven聚合)(代码片段)

SpringCloud--从单体架构到微服务架构、代码拆分(maven聚合)一、架构演变1.1系统架构、集群、分布式系统简单理解(1)什么是系统架构?(2)集群(3)分布式系统(4)架构演变1.2系统... 查看详情

gradle从groovy到kts迁移(代码片段)

本文主要记录Groovy版本和kotlin版本的Gradle相关设置。以便备忘或以后迁移参考。settings.gradlesettings.gradle:pluginManagement //所有Gradle插件的下载远程仓库地址repositoriesgradlePluginPortal()//google()//mavenCentral()//阿里云镜像mavenurl'https... 查看详情

maven学习(代码片段)

Maven学习(一)在Java开发过程中,难免会和Maven打交道,那么今天梳理一下Maven.1.Maven是什么?要了解一个东西,首先要明白它是什么?今天要了解Maven.我们从Maven官网查找到了这么一段话。ApacheMavenisasoftwareprojectma... 查看详情

maven从入门到入门(代码片段)

Maven的作用是包管理,当然不仅于此,但这里记录的仅限于此。包管理可以将我们从手动添加jar包,手动建立引用的繁琐的工作中解放出来,我们只需要维护一个pom.xml文件,类似于ant的build文件,这个文件... 查看详情

maven从入门到入门(代码片段)

Maven的作用是包管理,当然不仅于此,但这里记录的仅限于此。包管理可以将我们从手动添加jar包,手动建立引用的繁琐的工作中解放出来,我们只需要维护一个pom.xml文件,类似于ant的build文件,这个文件... 查看详情

maven入门(代码片段)

一、Maven的基本概念Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。1.1、项目构建项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测... 查看详情

idea下载社区版后无法从maven私有仓库下载依赖(代码片段)

下载社区版安装以后,导入项目,下载不下来依赖原因:最新版IDEA后内置Maven的版本提升到了3.8.1,从3.8.1开始setting.xml会增加一个默认镜像maven-default-http-blocker来阻止从HTTP链接下载不安全的依赖库。setting.xml<mirr... 查看详情

maven学习(代码片段)

...会尝试从仓库里再次下载一个新的1.0版本。想要下载新的代码,数据服务版本需要被升级到1.1。对于快照,每次用户接口团队构建他们的项目时,Maven将自动获取最新的快照(data-service 查看详情

maven发布自己项目到maven中央仓库(代码片段)

目录1.sonatype网站相关1.1 注册sonatype网站账号1.2  登录后,新建问题 3.配置maven--setting.xml4.配置maven--pom.xml4.1添加个人信息4.2添加开源版权信息4.3添加scm信息4.4添加插件4.4添加build5.下载GPG加密5.1安装Gpg4Win5.2创建密钥对 5.3验... 查看详情

docker搭建maven私服(nexus3),整合springboot上传下载依赖(代码片段)

一、前言我们在JavaWeb开发中必不可少的就是jar包管理-maven,在没有maven之前,都是自己手动下载jar包导入到项目中,非常的繁琐。maven出现之后,又迎来新的问题,对于仓库里人家发布的都可以引用下载,但是公司自己内部写的j... 查看详情

maven拷贝外部依赖到指定目录(代码片段)

方法一:使用maven-dependency-plugin插件<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executio 查看详情

maven学习笔记(代码片段)

ml1.什么是Maven,为什么学习Maven2.新建一个maven项目;打开项目3.Maven命令的简单使用(1)首先是项目编译命令;(2)清除命令(3)项目打包命令(4)将项目安装到本地仓库(5)将自己找到的jar包部署到本地仓库;1.什么是Maven,为什么学习Mavenmaven是A... 查看详情

java从maven插件中的artifactinfo创建mavenproject。(代码片段)

查看详情

导入到idea里的springboot/maven项目不显示为maven项目(代码片段)

背景你有一个clone下来的springboot项目(肯定是maven的啦),或者一个普通的非springboot项目,导入到idea里头的时候不显示为maven项目的样式,比如表现为:右侧没有Maven侧边栏(就是查看依赖、执行maven命... 查看详情

centos7安装maven(代码片段)

1.下载maven到系统下载3.6.1版本的可以直接访问官网下载然后上传到linux中https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz或者在linux使用wget命令下载wgethttps://archive.apache.org/dist/maven/maven-3 查看详情

java示例代码_将构件从Maven构建部署到SourceForge文件发布系统

java示例代码_将构件从Maven构建部署到SourceForge文件发布系统 查看详情

maven环境配置(代码片段)

  配置MAVEN_HOME MAVEN_HOMED:\\soft\\apache-maven-3.6.1  path变量添加到maven的bin目录:  然后输入 mvn-v有maven相关的提示信息出现则说明maven安装成功。  查看详情

springboot(maven)+docker打包(代码片段)

SpringBoot(Maven)+Docker打包本文可以实现:将SpringBoot项目从GitHubclone到服务器上后,一条命令直接完成依赖下载-编译-镜像生成-容器运行。注意:本文SpringBoot项目为单机部署,即只在一台服务器进行部署,并使... 查看详情