时间:2022.11.15

文章目录

  • 前言
  • 一、Maven简介
  • 二、如何查找对公共Maven存储库的依赖项
  • 三、POM简介
    • 1.变量
      • 1.1 Project Model Variables 项目模型变量
      • 1.2 Special Variables 特殊变量
      • 1.3 Properties 属性
        • 1.3.1 env.x
        • 1.3.2 project.x
        • 1.3.3 setting.x
        • 1.3.4 Java System Properties
        • 1.3.5 x
      • 1.4 查看属性
      • 1.4.1 System Properties 系统属性
      • 1.4.2 Environment Variables 环境变量
    • 2.dependency 依赖性
    • 3.依赖机制
  • 总结

前言

Maven一些具体知识


一、Maven简介

软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven 可以从一个中心信息片段管理项目的构建、报告和文档。
一种标准的方式来构建项目,一个项目组成的清晰定义,一种发布项目信息的简单方式,以及一种跨多个项目共享 jar 的方式。
Maven 使用其项目对象模型(POM)和一组插件构建项目。

二、如何查找对公共Maven存储库的依赖项

官方推荐的搜索引擎:
https://search.maven.org
https://repository.apache.org
https://mvnrepository.com

三、POM简介

项目对象模型或 POM 是 Maven 中的基本工作单元。它是一个 XML 文件,包含有关 Maven 用于构建项目的项目和配置详细信息的信息。它包含大多数项目的默认值。

1.变量

需要在几个不同的位置使用相同的值。为了帮助确保值只指定一次,Maven 允许您在 POM 中使用自己的和预定义的变量。
使用方法为${X}

1.1 Project Model Variables 项目模型变量

变量名 描述
project.groupId 当前项目所在的目录
project.version 当前项目所在的目录,表示为URI
project.build.sourceDirectory 表示构建开始的时间戳(UTC)

1.2 Special Variables 特殊变量

变量名 描述
project.basedir 当前项目所在的目录
project.baseUri 当前项目所在的目录,表示为URI
maven.build.timestamp 表示构建开始的时间戳(UTC)

还可以声明属性 maven.build.timestamp.format 定制构建时间戳格式

<project>...<properties><maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss'Z'</maven.build.timestamp.format></properties>...
</project>

1.3 Properties 属性

Maven属性是值占位符,就像 Ant 中的属性一样。它们的值可以通过使用符号 ${ X }在 POM 中的任何地方访问,其中 X 是属性。或者它们可以被插件用作默认值
将项目中定义的任何属性引用为变量

1.3.1 env.x

返回 shell 的环境变量

1.3.2 project.x

POM 中带点(.)符号的路径将包含相应元素的值

1.3.3 setting.x

settings.xml中带点(.)标记的路径

1.3.4 Java System Properties

Java 系统属性

1.3.5 x

设置在<properties />的值

1.4 查看属性

mvn help:system

1.4.1 System Properties 系统属性

系统属性名 意思
awt.toolkit sun.lwawt.macosx.LWCToolkit 抽象窗口工具包
classworlds.conf /opt/apache-maven-3.8.6/bin/m2.conf
file.encoding.pkg sun.io
file.encoding UTF-8 文件编码
file.separator / 文件分隔符
ftp.nonProxyHosts 文件传输,非代理主机
gopherProxySet false
guice.disable.misplaced.annotation.check true Guice(依赖注入框架)禁用错位注释检查
http.nonProxyHosts 超文本传输,非代理主机
java.awt.graphicsenv sun.awt.CGraphicsEnvironment Java AWT图形环境
java.awt.printerjob sun.lwawt.macosx.CPrinterJob Java AWT 打印机作业
java.class.path opt/apache-maven-3.8.6/boot/plexus-classworlds-2.6.0.jar Java类路径
java.class.version 52.0 Java类版本
java.endorsed.dirs /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/endorsed java签注文件的路径
java.ext.dirs 可选包扩展机制
java.home /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre Java主目录
java.io.tmpdir /var/folders/g3/3t8p0shx77n15hzsdc09c6k40000gn/T/ io操作的临时文件路径
java.library.path Java库路径
java.runtime.name OpenJDK Runtime Environment java运行环境名称
java.runtime.version 1.8.0_352-b08 Java运行时版本
java.specification.vendor Oracle Corporation Java规范供应商
java.specification.name Java Platform API Specification Java的规则说明文档的名称
java.specification.version 1.8 Java规则号
java.specification.maintenance.version 4 Java规范维护版本
java.vendor.url http://www.azul.com/ java发行者的网络地址
java.vm.version 25.352-b08 虚拟机版本号
java.vm.vendor Azul Systems, Inc. Java 虚拟机厂商
java.vm.name OpenJDK 64-Bit Server VM Java虚拟机名称
java.vm.specification.name Java Virtual Machine Specification 虚拟机的规则说明文档的名字
java.vm.specification.vendor Oracle Corporation 虚拟机规则说明文档的发行者
java.vm.specification.version 1.8 Java虚拟机规格版本
java.vm.info mixed mode Java虚拟机信息
java.version 1.8.0_352 java版本
java.vendor Azul Systems, Inc. java厂商
java.vendor.url.bug http://www.azul.com/support/ Java供应商url错误
jdk.vendor.version Zulu 8.66.0.15-CA-macos-aarch64 JDK厂商版本
line.separator 行分隔符
library.jansi.path /opt/apache-maven-3.8.6/lib/jansi-native 小型 Java 库,它允许您使用ANSI转义码来格式化您的控制台输出
maven.multiModuleProjectDirectory /Users/jianjian/Desktop/CompanyProjects/auth-parent maven多模块项目目录
maven.conf /opt/apache-maven-3.8.6/conf maven配置
maven.home /opt/apache-maven-3.8.6 maven主目录
os.arch aarch64 操作系统的架构
os.name Mac OS X 操作系统名称
os.version 12.6.1 操作系统版本
path.separator : 路径分隔符
sun.boot.library.path /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib Sun引导库路径
sun.java.launcher SUN_STANDARD Sun Java启动器
sun.os.patch.level unknown Sun OS补丁级别
sun.jnu.encoding UTF-8 Sun jnu编码
sun.management.compiler HotSpot 64-Bit Tiered Compilers Sun管理编译器
sun.arch.data.model 64 Java虚拟机JVM位数
sun.java.command org.codehaus.plexus.classworlds.launcher.Launcher help:system Sun Java命令
sun.cpu.endian little Sun CPU端
sun.io.unicode.encoding UnicodeBig Sun IO unicode编码
socksNonProxyHosts socks非代理主机
sun.cpu.isalist Sun CPU指令集
user.country CN 用户的国家
user.dir /Users/jianjian/Desktop/CompanyProjects/auth-parent 用户当前工作目录
user.home /Users/jianjian 用户的主目录
user.timezone Asia/Shanghai 用户时区标识
user.name jianjian 用户名称
user.language zh 用户语言

1.4.2 Environment Variables 环境变量

环境变量名 意思
COMMAND_MODE unix2003 命令模式
CLICOLOR 1
__CF_USER_TEXT_ENCODING 0x1F5:0x19:0x34 Cf用户文本编码
__CFBundleIdentifier com.jetbrains.intellij
HOME /Users/jianjian 首页
INTELLIJ_COMMAND_HISTFILE /Users/jianjian/Library/Caches/JetBrains/IntelliJIdea2022.2/terminal/history/auth-parent-history
JAVA_HOME /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home Java主目录
JAVA_8_HOME /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home Java8主目录
JAVA_17_HOME /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home Java17主目录
JAVA_MAIN_CLASS_69946 org.codehaus.plexus.classworlds.launcher.Launcher Java主类
LOGNAME jianjian 日志名字
LOGIN_SHELL 1 登录SHELL
LC_CTYPE zh_CN.UTF-8
MAVEN_CMD_LINE_ARGS help:system Maven CMD行参数
MAVEN_PROJECTBASEDIR /Users/jianjian/Desktop/CompanyProjects/auth-parent
OLDPWD /Users/jianjian/Desktop/CompanyProjects/auth-parent
PATH /opt/apache-maven-3.8.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion Tech 路径
Preview.app/Contents/Public:/Users/jianjian/Library/Application Support/JetBrains/Toolbox/scripts
PWD /Users/jianjian/Desktop/CompanyProjects/auth-parent
SSH_AUTH_SOCK /private/tmp/com.apple.launchd.UvwSotbKDb/Listeners SSH认证包
SHELL /bin/zsh 壳(用来区别于核)
SHLVL 1
TERMINAL_EMULATOR JetBrains-JediTerm 终端模拟器
TERM_SESSION_ID 815774e1-316e-4e63-8d0b-404b812a1987 术语会话id
TERM xterm-256color | 术语
TMPDIR /var/folders/g3/3t8p0shx77n15hzsdc09c6k40000gn/T/
USER jianjian 用户
XPC_SERVICE_NAME 0
XPC_FLAGS 0x0

2.dependency 依赖性

<dependencyManagement><dependencies><dependency><groupId/><artifactId/><version/><type/><classifier/><scope/><systemPath/><exclusions><exclusion><groupId/><artifactId/></exclusion></exclusions><optional/></dependency></dependencies></dependencyManagement>
Element 元素 Type 类型 Description 描述
groupId String 产生依赖项的项目组,例如org.apache.maven
artifactId String 由项目组产生的工件的唯一ID,例如maven-artifact
version String 依赖关系版本
type String 依赖类型,映射到文件扩展名、可选的分类器和一些其他属性,有些例子:jar、war、test-jar,默认值为jar
classfier String 依赖关系的分类器
scop String 依赖项范围:compile,runtime,test,system,proivded
systemPath String 仅用于系统范围
exclusions/exclusion* List 列出一组工件,在计算传递依赖关系时,这些工件应该从这个依赖关系的工件列表中==排除==
optional String 于使用此库,依赖项是可选的。如果库在其他地方使用,则依赖项的版本将在依赖项计算中考虑,但它不会传递,默认值为false

3.依赖机制

  • compile 编译
    这是默认范围 ,如果没有指定,则使用它。编译依赖项在项目的所有类路径中都可用。而且,这些依赖关系被传播到依赖项目
  • provided 提供
    指示您期望 JDK 或容器在运行时提供依赖项,部署到服务器(空间)无效
  • runtime 运行时间
    此范围指示编译不需要依赖项,但执行需要依赖项。编译时需要接口调用方法,但是实际运行时需要的是接口的实现类。
  • test 测试
    这个作用域表明依赖项对于应用程序的正常使用不是必需的,并且仅对于测试编译和执行阶段可用。main目录无效,部署到服务器(空间)无效
  • system 系统
    除了必须提供显式包含它的 JAR。工件始终是可用的,并且不会在存储库中查找。这样引入依赖完全不具有可移植性,所以不要使用
  • import 导入
    管理依赖最基本的办法就是继承父工程,典型案例:在项目中引入SpringBoot、SpringCloud依赖

总结

以上全部都是翻阅官方文档整理出来的,就单单只是为了前几天建新项目中用到了变量,以前没太注意,现在为了补一下底层知识
官方网址为:apachemaven

Maven知识补充(项目模型变量,Maven属性,依赖项的范围,查找公共存储库的依赖项等)相关推荐

  1. maven创建java项目_使用maven命令行创建java项目

    一.先创建一个quick-start项目: 使用 mvn archetype:generate 进行创建,如果没有指定参数或者项目类型,交互系统首先会询问创建项目的基本类型, 如下所示,默认为类型7. ...

  2. 使用Maven管理Java项目

    一.Maven入门 1.下载maven Maven是基于项目对象模型(Project Object Model),可以通过一小段描述信息来管理项目的构建.报告和文档的项目管理工具,提供了一个仓库的概念 ...

  3. linux下eclipse开发storm,eclipse 通过maven 开发storm项目

    window系统安装java 这里下载jdk8....... 配置环境变量 1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置&quo ...

  4. 使用IDEA+maven配置SSM项目步骤,以及配置项目过程中遇到的各种坑(SSM配置文件加载问题,使用注解开发问题,maven开发SSM项目步骤)

    问题概览 1. 更改springmvc配置文件的默认位置,但是"classpath:文件路径",路径明明正确,但是就是识别不到,idea报找不到配置文件的错误. 2. 使用myba ...

  5. 如何直接用maven创建java项目,不用eclipse,不用idea,不用任何ide

    不用eclipse,不用idea,不用任何ide,如何直接用maven创建java项目 写作背景 maven简介 安装maven 配置镜像与本地仓库 更改镜像下载地址 更改本地仓库 配置环境变量 建立 ...

  6. Java项目如何改成maven_普通java项目改进为maven:ecplise

    首先:项目上右击->configure->Convert to Maven Project 将项目转化为maven项目. 或者在.project文件中natures节添加 org.ecli ...

  7. Maven发布web项目到tomcat

    在java开发中经常要引入很多第三方jar包:然而无论是java web开发还是其他java项目的开发经常会由于缺少依赖包引来一些不必要的异常.常常也是因为这样的原因导致许多简单的缺包和版本问题耗费大 ...

  8. Maven搭建多子项目工程

    Maven搭建多子项目工程 通过maven命令搭建多子项目工程 实现步骤 1.创建main工程 2.修改main工程 3.创建child项目 4.完毕 通过maven命令搭建多子项目工程 本篇介绍如何 ...

  9. springcloud 子项目怎么导入_「 从0到1学习微服务SpringCloud 」09 补充篇-maven父子模块项目...

    系列文章(更新ing): 作为微服务的项目,如果将每个项目都拆成一个完整的项目,很难开发,那得打开多少个idea.应该将它们归到一个项目里,使用maven父子模块项目的形式,如下图 之前我们项目的拆成 ...

  10. 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven

    小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了.现在他只能留在这个2.5线城市,进入这家软 ...

最新文章

  1. VMware 虚拟化编程(4) — VDDK 安装
  2. MySQL Router实现MySQL的读写分离
  3. html表单php连接mysql数据库,PHP 连接MySQL数据库
  4. ngrx里StoreModule.forFeature(‘example‘, reducers)运行时的数据结构
  5. 961计算机基础综合pdf,2017-2018年北航科学与技术教育961计算机基础综合考研大纲重难点.pdf...
  6. 计算机一级应用于段落还是文字,计算机一级复习资料
  7. darknet_ros消息在其它包中的订阅
  8. Go 实现 soundex 算法
  9. jvm入门到详解-1
  10. 职教高考专业课考计算机,职教高考和普通高考一样吗
  11. Python写数据结构:二叉树的性质
  12. s3c2440定时器简介
  13. 21.MySQL 性能优化
  14. Flink CDC 项目 GitHub star 破 2000,新增 Maintainer 成员
  15. 职场风云 | 导师的光亮
  16. Best生物信息学家应该掌握的数学_之我的看法
  17. 【每天一个 Linux 命令】ssh 命令
  18. GIS小知识-由对GCJ-02的疑问引出的坐标系相关概念
  19. matlab已经停止工作,Win7旗舰版运行Matlab提示已停止工作解决措施
  20. [树形dp]P3174 [HAOI2009]毛毛虫 题解

热门文章

  1. php 繁体自动转简体,php 繁体字转化为简体字
  2. 阿里云域名SSL证书安装
  3. 面部捕捉技术_一种基于面部捕捉系统的捕捉点定位系统的制作方法
  4. pc自建服务器传输3ds,新3DS自带的PC管理MicroSD 最强无线传输软件
  5. 如何使用ps制作ico图标文件
  6. Linux中rpm详解
  7. 568A以及568B线序
  8. 图片调整大小后变得不清晰了怎么办?
  9. Python3.7.0安装报:0x80072efd
  10. 安卓:股票筛选及分析系统