首页 > 其他分享 >Maven

Maven

时间:2023-04-07 10:36:20浏览次数:36  
标签:maven 依赖 仓库 jar Maven 编译

Maven

1.概述

Maven隶属于Apache开发的一个项目管理工具,有三个作用:

  • 依赖管理:帮助导入jar包并快捷管理,省去自己手动导入的工作
  • 项目构建:提供标准、跨平台的自动化项目构建方式(编译、运行、测试、打包、发布等),一站式服务
  • 统一项目结构:提供统一且标准的工程目录结构

image-20230406170918003

  • main: 实际项目资源
    1. java: java源文件目录
    2. resources:配置文件目录
  • test:测试项目资源
    1. java:测试源文件目录
    2. resources:测试配置文件目录
  • target:源代码编译后的文件
  • pom.xml:项目配置文件

2.依赖管理

导入依赖

在maven项目中的pom.xml中,配置以下代码即可, 以下使用导入junit jar包举例

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13.1</version>
  <scope>compile</scope>
</dependency>
相关概念:坐标(GAV)

Maven可以通过坐标快速的定位到仓库中的某个jar文件,获取并使用

  • G:groupId,组织ID,当前项目或者jar包的组织名称,通常是域名反写
  • A:artifactId, 名称,当前项目或者jar包的名称,通常是模块名称
  • V:version, 版本号,当前项目或者jar包的版本
  • scope:导入的项目或jar包的作用域
    1. 不写:默认情况是compile,在任何地方使用
    2. main:主编译环境,即main文件夹下
    3. test:测试环境,即test文件夹下
依赖范围 编译classpath 测试classpath 运行classpath 例子
compile Y Y Y 默认值。logback
test - Y - Junit
provided Y Y - servlet-api
runtime - Y Y jdbc驱动
system Y Y - 存储在本地的jar包
import 引入DependencyManagement
(作用:只引入pom.xml)
  • compile :作用于编译环境、测试环境、运行环境。此为默认值,也是绝大多数依赖要配置的范围。
  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
  • provided :作用于编译环境、测试环境。运行环境无效。详见下面代码。
  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题

以下三个jar包需要配置provided

  1. javax.servlet-api
  2. javax.servlet.jsp-api
  3. lombok

以下一个jar包可以配置test

  1. junit
依赖传递

依赖传递可以分为:

  1. 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  2. 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

例如A.jar中依赖了B.jar,B.jar中又依赖了C.jar,nameA和B,B和C就是直接依赖,A和C是间接依赖,此时如果不想A和C产生依赖关系,需要排除依赖

在A中配置如下:

<dependency>
    <groupId>com.abc</groupId>
    <artifactId>A</artifactId>
    <version>1.0-SNAPSHOT</version>
   
    <!--排除依赖, 主动断开依赖的资源-->
    <exclusions>
    	<exclusion>
            <groupId>C</groupId>
            <artifactId>C</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3.仓库

仓库就是存放jar包的地方,一般有3类仓库

  1. 本地仓库:本地下载好的jar包存放的目录
  2. 中央仓库:由Maven项目团队维护的开源的jar包仓库地址,https://repo1.maven.org/maven2/
  3. 远程仓库(私服):中央仓库国内访问较慢,一般由公司建立,便于国内使用,比如阿里云对中央仓库的镜像

Snipaste_2023-04-07_10-21-23

配置本地仓库

在安装maven的路径中找到conf->settings.xml,找到如下标签,标签内容是自己本地仓库的路径

<localRepository>D:\develop\software\apache-maven-3.6.1\Maven_Repository</localRepository>
配置中央仓库

以阿里云为例,在标签中添加以下代码

<mirror>
        <!-- 本镜像的id,与这里配置的其他镜像id不一样即可 -->
        <id>alimaven</id>
        <!--  central表示镜像的是中央仓库 -->
        <mirrorOf>central</mirrorOf>
        <!-- 名称,可以省略 -->
        <name>aliyun maven</name>
        <!-- 镜像路径,固定不变 -->
        <!-- <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 已弃用-->
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>

4. IDEA中集成Maven

Snipaste_2023-04-07_10-25-42

生命周期

Maven对项目的构建过程进行抽象和统一,描述了项目的完整构建过程和经历阶段

  • Clean:清理工作
  • Default:核心工作,如编译,测试,打包,安装,部署等
  • Site:生成报告,发布站点(基本不会使用)

主要关注以下几点:

• clean:移除上一次构建生成的文件,也就是当前模块中target的目录

• compile:编译项目源代码,并将编译后的class文件和资源文件复制到当前模块中target目录

• test:使用合适的单元测试框架运行测试(junit)

• package:将编译后的文件打包,如:jar、war等;并存入当前模块中target目录

• install:安装项目的jar包到本地仓库

标签:maven,依赖,仓库,jar,Maven,编译
From: https://www.cnblogs.com/qifenku/p/17295250.html

相关文章

  • HomeBrew 安装 Maven 及其 IDEA 配置
    Brew安装Mavenbrewsearchmaven#使用搜索工具去搜索maven包brewinfomaven#使用info查看maven包当前的信息情况,包括版本依赖描述等brewinstallmaven安装过程很顺利,这时候brew就已经帮我们做好了环境变量了。很多教程在这一步后会手动去生命maven的目录情况,我看了......
  • 导入jar包到本地的maven仓库
    当我们需要用maven来管理依赖但是又没有在线的仓库可用时,可以直接导入到本地仓库来管理依赖。在cmd中执行一下命令:mvninstall:install-file"-Dfile=testjar1-1.2-SNAPSHOT.jar""-DgroupId=com.test.test""-DartifactId=testjar1""-Dversion=1.2-SNAPSHOT""-Dpackaging=......
  • cfdm配套的maven版本和setting
    1、版本号3.5.22、setting.xml<?xmlversion="1.0"encoding="UTF-8"?><settingsxmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="......
  • maven导出资源问题
    Maven约定大于配置可能导致配置文件无法导出或生效的问题解决方法<build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>......
  • 在Linux安装Maven
    前言Linux系统安装、配置Maven步骤和相关资源地址,以3.8.2版本为例。安装下载解压#备用地址清华镜像https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gzecho"创建下载、编译目录">/dev/nullmkdir-p~/soft/......
  • java——maven——分模块开发与设计
                注意:   参数说明:-DgroupId:项目组ID,通常为组织名或公司网址的反写。-DartifactId:项目名。-DarchetypeArtifactId:指定ArchetypeId,maven-archetype-quickstart用于快速创建一个简单的Maven项目。-DinteractiveMode:是......
  • java——maven——idea使用模板(骨架)创建maven工程——webapp(重点)
    黑马模板:                  本地:         ......
  • 项目运行Maven插件失败问题
    问题描述当我尝试运行Tomcat:7:run插件的时候,直接显示Error:NovalidMaveninstallationfound.EithersetthehomedirectoryintheconfigurationdialogorsettheM2_HOMEenvironmentvariableonyoursystem然后,我直奔百度而去问题解决发现,我单纯地将git项目从仓......
  • 从maven中央仓库手动下载jar包到本地仓库
    注意!!!:不能自己浏览器下载jar包拖入到本地仓库(原因:maven下载有固定格式)一、浏览器登录maven中央仓库网址【maven中央仓库网址】https://mvnrepository.com/二、搜索需要的jar包   三、点击坐标mybatis坐标进入  四、套用模板 mvndependency:get-DremoteRe......
  • 性能环境之Jenkins+Maven自动化部署SpringBoot压测环境(Docker篇)
    前言在上文性能环境之Jenkins+Maven自动化部署SpringBoot压测环境(实战篇)中我们介绍了常规部署流程,本文将在上文的基础上扩展Jenkins+Maven+Docker自动化部署我们的压测环境。关于DockerDocker在这里有什么用?Docker,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到......