当前位置: 首页 > article >正文

Maven依赖管理

POM

POM是一个 XML 文件,其中包含有关项目的信息以及 Maven 用于构建项目的配置详细信息。它包含大多数项目的默认值。这方面的例子是构建目录,它是target; 源目录,即src/main/java; 测试源目录,即src/test/java; 等等。当执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。可以在 POM 中指定的一些配置是项目依赖项、可以执行的插件或目标、构建配置文件等。还可以指定其他信息,例如项目版本、描述、开发人员、邮件列表等。
最小的POM

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0.0</version>
</project>

POM 的基本要素:

  • project:这是所有 Maven pom.xml 文件中的顶级元素。
  • modelVersion:此元素指示此 POM 使用的对象模型的版本。模型本身的版本很少更改,但是当 Maven 开发人员认为有必要更改模型时,为了确保使用的稳定性,它是强制性的。
  • groupId:该元素指示创建项目的组织或组的唯一标识符。groupId 是项目的关键标识符之一,通常基于您组织的完全限定域名。例如org.apache.maven.plugins是为所有 Maven 插件指定的 groupId。
  • artifactId:此元素指示此项目生成的主要工件的唯一基本名称。项目的主要工件通常是 JAR 文件。像源包这样的次要工件也使用 artifactId 作为它们最终名称的一部分。Maven 生成的典型工件的格式为 -.(例如,myapp-1.0.jar)。
  • version:该元素表示项目生成的工件的版本。Maven 在帮助您进行版本管理方面大有帮助,您经常会SNAPSHOT在版本中看到指示符,这表明项目处于开发状态。我们将在本指南中讨论快照的使用以及它们如何进一步工作。
  • name:此元素指示用于项目的显示名称。这在 Maven 生成的文档中经常使用。
  • scope:指示您的项目如何使用该依赖项
  • url:此元素指示可以找到项目站点的位置。这在 Maven 生成的文档中经常使用。
  • properties:此元素包含可在 POM 中的任何位置访问的值占位符。
  • dependencies:该元素的子元素列出dependencies。POM 的基石。
  • build:这个元素处理诸如声明项目的目录结构和管理插件之类的事情。

多模块项目

项目结构

+- pom.xml
+- my-app
| +- pom.xml
| +- src
|   +- main
|     +- java
+- my-webapp
| +- pom.xml
| +- src
|   +- main
|     +- webapp

pom.xml内容如下:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany.app</groupId>
  <artifactId>app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <modules>
    <module>my-app</module>
    <module>my-webapp</module>
  </modules>
</project>

my-app/pom.xml内容如下:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
	  <parent>
	    <groupId>com.mycompany.app</groupId>
	    <artifactId>app</artifactId>
	    <version>1.0-SNAPSHOT</version>
	  </parent>
	  <groupId>com.mycompany.app</groupId>
	  <artifactId>my-app</artifactId>
	  <version>1.0-SNAPSHOT</version>
	  <packaging>pom</packaging>
  
</project>

my-webapp/pom.xml内容如下:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
	  <parent>
	    <groupId>com.mycompany.app</groupId>
	    <artifactId>app</artifactId>
	    <version>1.0-SNAPSHOT</version>
	  </parent>
	  <groupId>com.mycompany.app</groupId>
	  <artifactId>my-webapp</artifactId>
	  <version>1.0-SNAPSHOT</version>
	  <packaging>pom</packaging>
  
	   <dependencies>
	   <dependency>
	     <groupId>com.mycompany.app</groupId>
	     <artifactId>my-app</artifactId>
	     <version>1.0-SNAPSHOT</version>
	   </dependency>
	 </dependencies>
  
</project>

依赖关系

Maven定义了几种依赖关系,分别是compile、test、runtime和provided:

  • compile:是最常用的,Maven会把这种类型的依赖直接放入classpath
  • est:依赖表示仅在测试时使用,正常运行时并不需要
  • runtime:依赖表示编译时不需要,但运行时需要
  • provided:依赖表示编译时需要,但运行时不需要

Maven镜像

Maven如何从何处下载依赖的jar包?
Maven维护了一个中央仓库(repo1.maven.org),所有第三方库将自身的jar以及相关信息上传至中央仓库,Maven就可以从中央仓库把所需依赖下载到本地。Maven并不会每次都从中央仓库下载jar包。一个jar包一旦被下载过,就会被Maven自动缓存在本地目录(用户主目录的.m2目录),所以,除了第一次编译时因为下载需要时间会比较慢,后续过程因为有本地缓存,并不会重复下载相同的jar包。
Maven 将从远程存储库下载依赖项到本地存储库。当构建项目时,你可能注意到 Maven 下载了很多东西(这些下载是用于构建项目的各种插件的依赖项)。默认情况下,可以在https://repo.maven.apache.org/maven2/找到Maven 使用的远程存储库。还可以设置自己的远程存储库以代替或补充默认远程存储库。

镜像仓库配置

方式一:全局配置
打开 Maven 的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在标签中添加 mirror 子节点:

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

方式二:单项目配置
单项目配置时,需要修改pom文件。pom文件中,没有mirror元素。在pom文件中,通过覆盖默认的中央仓库的配置,实现中央仓库地址的变更。
修改项目的pom文件:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>conifg</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>

<repositories>
    <repository>
        <id>central</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <layout>default</layout>
        <!-- 是否开启发布版构件下载 -->
        <releases>
            <enabled>true</enabled>
        </releases>
        <!-- 是否开启快照版构件下载 -->
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

项目构建

方式一:命令行
在命令中,进入到pom.xml所在目录,输入以下命令,即可在target目录下获得编译后自动打包的jar。

mvn clean package

方式二:使用IDEA内置maven工具
在这里插入图片描述


http://www.kler.cn/a/3461.html

相关文章:

  • 【深度学习基础】多层感知机 | 权重衰减
  • 学到一些小知识关于Maven 与 logback 与 jpa 日志
  • Agent AI: Agent AI 的新兴范式
  • Golang之Context详解
  • React 表单处理与网络请求封装详解[特殊字符][特殊字符]
  • 小哆啦解题记:如何计算除自身以外数组的乘积
  • css绘制一个Pinia小菠萝
  • Matter名词解释
  • 初识HTTP协议
  • 大数据的常用算法(分类、回归分析、聚类、关联规则、神经网络方法、web数据挖掘)
  • 数组(完全二叉树)向下建堆法与堆排序O(N*logN)
  • redis 集群
  • [数据结构] 用两个栈实现队列详解
  • Prometheus cadvisor容器监控和node-exporter节点监控
  • STM-32:按键控制LED灯 程序详解
  • Linux的基础知识
  • 【SSM】Spring + SpringMVC +MyBatis 框架整合
  • 【C#进阶】C# 集合类
  • C语言数据结构初阶(8)----栈与队列OJ题
  • 主线程与子线程之间相互通信(HandlerThread)
  • Gateway服务网关
  • 《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界
  • 【pytorch】深度学习模型调参策略(一):选择架构,优化器及批大小
  • SpringBoot 整合Quartz定时任务管理【SpringBoot系列18】
  • CUDA-NVIDIA-冬令营004
  • 1.11、自动化