Maven知识补充(项目模型变量,Maven属性,依赖项的范围,查找公共存储库的依赖项等)
时间: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属性,依赖项的范围,查找公共存储库的依赖项等)相关推荐
- maven创建java项目_使用maven命令行创建java项目
一.先创建一个quick-start项目: 使用 mvn archetype:generate 进行创建,如果没有指定参数或者项目类型,交互系统首先会询问创建项目的基本类型, 如下所示,默认为类型7. ...
- 使用Maven管理Java项目
一.Maven入门 1.下载maven Maven是基于项目对象模型(Project Object Model),可以通过一小段描述信息来管理项目的构建.报告和文档的项目管理工具,提供了一个仓库的概念 ...
- linux下eclipse开发storm,eclipse 通过maven 开发storm项目
window系统安装java 这里下载jdk8....... 配置环境变量 1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置&quo ...
- 使用IDEA+maven配置SSM项目步骤,以及配置项目过程中遇到的各种坑(SSM配置文件加载问题,使用注解开发问题,maven开发SSM项目步骤)
问题概览 1. 更改springmvc配置文件的默认位置,但是"classpath:文件路径",路径明明正确,但是就是识别不到,idea报找不到配置文件的错误. 2. 使用myba ...
- 如何直接用maven创建java项目,不用eclipse,不用idea,不用任何ide
不用eclipse,不用idea,不用任何ide,如何直接用maven创建java项目 写作背景 maven简介 安装maven 配置镜像与本地仓库 更改镜像下载地址 更改本地仓库 配置环境变量 建立 ...
- Java项目如何改成maven_普通java项目改进为maven:ecplise
首先:项目上右击->configure->Convert to Maven Project 将项目转化为maven项目. 或者在.project文件中natures节添加 org.ecli ...
- Maven发布web项目到tomcat
在java开发中经常要引入很多第三方jar包:然而无论是java web开发还是其他java项目的开发经常会由于缺少依赖包引来一些不必要的异常.常常也是因为这样的原因导致许多简单的缺包和版本问题耗费大 ...
- Maven搭建多子项目工程
Maven搭建多子项目工程 通过maven命令搭建多子项目工程 实现步骤 1.创建main工程 2.修改main工程 3.创建child项目 4.完毕 通过maven命令搭建多子项目工程 本篇介绍如何 ...
- springcloud 子项目怎么导入_「 从0到1学习微服务SpringCloud 」09 补充篇-maven父子模块项目...
系列文章(更新ing): 作为微服务的项目,如果将每个项目都拆成一个完整的项目,很难开发,那得打开多少个idea.应该将它们归到一个项目里,使用maven父子模块项目的形式,如下图 之前我们项目的拆成 ...
- 走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven
小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了.现在他只能留在这个2.5线城市,进入这家软 ...
最新文章
- VMware 虚拟化编程(4) — VDDK 安装
- MySQL Router实现MySQL的读写分离
- html表单php连接mysql数据库,PHP 连接MySQL数据库
- ngrx里StoreModule.forFeature(‘example‘, reducers)运行时的数据结构
- 961计算机基础综合pdf,2017-2018年北航科学与技术教育961计算机基础综合考研大纲重难点.pdf...
- 计算机一级应用于段落还是文字,计算机一级复习资料
- darknet_ros消息在其它包中的订阅
- Go 实现 soundex 算法
- jvm入门到详解-1
- 职教高考专业课考计算机,职教高考和普通高考一样吗
- Python写数据结构:二叉树的性质
- s3c2440定时器简介
- 21.MySQL 性能优化
- Flink CDC 项目 GitHub star 破 2000,新增 Maintainer 成员
- 职场风云 | 导师的光亮
- Best生物信息学家应该掌握的数学_之我的看法
- 【每天一个 Linux 命令】ssh 命令
- GIS小知识-由对GCJ-02的疑问引出的坐标系相关概念
- matlab已经停止工作,Win7旗舰版运行Matlab提示已停止工作解决措施
- [树形dp]P3174 [HAOI2009]毛毛虫 题解