首页 > 其他分享 >Maven集锦

Maven集锦

时间:2023-08-15 16:25:32浏览次数:33  
标签:maven 依赖 -- Maven 仓库 集锦 资源

https://www.bilibili.com/video/BV1Ah411S7ZE

一、概念

1、什么是Maven

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

2、Maven的作用

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

image.png

3、仓库

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

  • 仓库分类:
    • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
    • 远程仓库:非自己电脑上的仓库,为本地仓库提供资源
      • 中央仓库:Maven团队维护,存储所有资源的仓库
      • 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
  • 私服的作用:
    • 保存具有版权的资源,包含购买或自主研发的jar
      • 中央仓库中的jar都是开源的,不能存储具有版权的资源
    • 一定范围内共享资源,仅对内部开放,不对外共享

4、坐标

Maven中的坐标用于描述仓库中的资源位置,https://repo1.maven.org/maven2
作用:使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成

主要组成:

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如:CRM、SMS)
  • version:定义当前项目版本
  • packaging:定义该项目的打包方式

二、配置

1、配置本地仓库地址

默认地址为:${user.home}/.m2/repository
个人比较喜欢把仓库地址设置为maven解压包中,maven为绿色软件,解压后可以直接使用

打开apache-maven-3.6.1/conf/settings.xml
image.png
把上面的<localRepository>/path/to/local/repo</localRepository>移动到注释外
修改为 <localRepository>C:\maven\apache-maven-3.6.1\repository</localRepository>

2、配置远程仓库地址

maven的中央仓库下载的速度慢,使用阿里云的镜像加速下载

<mirrors>
  <!-- 配置具体的仓库的下载镜像 -->
  <mirror>
    <!-- 此镜像的唯一标识符,用来区分不同的mirror元素 -->
    <id>alimaven</id>
    <!-- 对哪个仓库进行镜像,简单说就是替代哪个仓库 -->
    <mirrorOf>central</mirrorOf>
    <!-- 镜像名称-非必要 -->
    <name>aliyun maven</name>
    <!-- 镜像URL -->
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  </mirror>
</mirrors>

3、修改Setting.xml使全局默认使用jdk8

idea中,有些项目会默认是用jdk5什么的,不支持jdk8的版本,每次都需要自己手动设置

在setting.xml中,找到<profiles></profiles>标签,加入下列代码

<!-- 全局设置默认jdk8 -->
		<profile>
			<id>jdk18</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、使用tomcat插件启动war项目

使用意义不大。。。

<?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">
  <!--  省略其他配置 .... -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <!-- 默认访问路径:localhost:8080/<artifactId> -->
        <!-- <configuration>-->
            <!-- <port>80</port>-->
            <!-- <path>/</path>-->
        <!-- </configuration> -->
      </plugin>
      <!-- 下面这个,插件一直是红色的波浪线,使用不了 -->
      <!-- <plugin> -->
      <!-- <groupId>org.apache.tomcat.maven</groupId> -->
      <!-- <artifactId>common-tomcat-maven-plugin</artifactId> -->
      <!-- <version>2.1</version> -->
  		<!-- </plugin> -->
    </plugins>
  </build>
</project>

image.png

2、依赖管理

<?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.tzcxyh</groupId>
  <artifactId>learn-group</artifactId>
  <version>1.0.0</version>

  <!-- 依赖管理 -->
  <dependencies>
    <!-- 引入具体依赖 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
  • 依赖传递(依赖具有传递性)
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系(通过<dependency>标签)
    • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

learn-group直接依赖了junitlearn-group 间接依赖了 hamcrest-core
junit直接依赖了hamcrest-core。依赖是一个相对概念
image.png

  • 依赖传递冲突问题
    • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
    • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖顺序靠后的
    • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
  • 可选依赖:对外隐藏当前所依赖的资源(不透明、外部不可使用)
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13</version>
  <!-- 设置为true表示对外隐藏 -->
  <optional>true</optional>
</dependency>
  • 排除依赖:主动断开依赖的资源,被排除的依赖无需指定版本
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13</version>
  <exclusions>
    <exclusion>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-core</artifactId>
    </exclusion>
  </exclusions>
</dependency>

标签:maven,依赖,--,Maven,仓库,集锦,资源
From: https://www.cnblogs.com/lulu-buding/p/17631574.html

相关文章

  • 《angular 高级编程》学习集锦
    引用bootstrapnpminstallbootstrap在angular.json配置文件中,把关联的脚本文件添加到"scripts"数组中:最后再运行或重启ngserve,看看你的应用是否正在使用Bootstrap4。参考:https://angular.cn/guide/using-libraries......
  • 【maven】spring-boot-configuration-processor依赖
     依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>作用:生成配置元数据。(给自定义的配置类生成元数据信......
  • maven系列:POM文件总体配置说明
    <projectxmlns="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.0http://maven.apache.org/maven-v4_0_0.xsd"><!--......
  • maven系列:聚合与继承
    目录一、聚合创建Maven模块,设置打包类型为pom设置当前聚合工程所包含的子模块名称二、继承问题导入创建Maven模块,设置打包类型为pom在父工程的pom文件中配置依赖关系(子工程将沿用父工程中的依赖关系)配置子工程中可选的依赖关系在子工程中配置当前工程所继承的父工程在子工程中配......
  • maven系列:属性管理和版本管理
    目录一、属性配置与使用①:定义属性②:引用属性二、资源文件引用属性①:定义属性②:配置文件中引用属性③:开启资源文件目录加载属性的过滤器④:配置maven打war包时,忽略web.xml检查三、其他属性(了解)四、版本管理工程版本发布版本定义属性有什么好处?一、属性配置与使用①:定义属性......
  • maven系列:多环境配置与应用
    目录一、多环境配置步骤定义多环境使用多环境(构建过程)二、跳过测试(了解)应用场景跳过测试命令2.3细粒度控制跳过测试多环境配置有什么好处?maven提供配置多种环境的设定,帮助开发者使用过程中快速切换环境一、多环境配置步骤定义多环境<!--定义多环境--><profiles><!--......
  • Maven引入本地jar包
    如果是我们一个人的项目,那直接使用传统方式将jar导入项目中即可,但是在多人开发中每个人都需要导一次,太过麻烦,因此使用另外一种方法。如:引入taobao-sdk-java.jar操作自定义目录,这里在project的根目录新建lib文件夹,将jar放进去pom.xml中引入<dependency><groupId......
  • Maven引用公共模块
    项目结构:Common的pom:在Buisiniss的pom中添加:<dependency><groupId>cn.laoyao</groupId><artifactId>Common</artifactId><version>1.0-SNAPSHOT</version></dependency>就可以直接使用了......
  • maven环境配置
    父工程常用maven环境881.83.4.18.0.303.0.30.9.12.0.21<dependencyManagement><dependencies><!--mybatis-plus持久层--><dependency><groupId>com.baomidou</groupId>&......
  • maven系列:基本命令(创建类、构建打包类、IDEA中操作)
    目录一、创建类命令创建普通Maven项目创建WebMaven项目发布第三方Jar到本地库中二、构建打包类命令编译源代码编译测试代码编译测试代码打包项目清除打包的项目清除历史打包并重新打包清除并install到本地查看当前项目已被解析的依赖上传到私服三、IDEA中Maven操作通过Terminal执......