maven中可以直接引用的java系统属性和环境变量属性

本文详细介绍了使用Maven命令'help:system'获取的系统信息和环境变量,包括Java运行时环境、Maven配置路径、系统属性及环境变量等关键细节,为开发者提供全面的Maven构建环境概览。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、查看命令:

1
mvn help :system

二、引用

在pom文件中通过 ${变量名}来引用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
===============================================================================
========================= Platform Properties Details =========================
===============================================================================
 
===============================================================================
System Properties
===============================================================================
 
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:\Program Files\Java\jdk1.8.0_91\jre\bin
java.vm.version=25.91-b15
java.vm.vendor=Oracle Corporation
maven.multiModuleProjectDirectory=D:\tools\IntelliJIDEA15.0.2\IdeaProject2\starwifi
java.vendor.url=http://java.oracle.com/
path.separator=;
guice.disable.misplaced.annotation.check=true
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg=sun.io
user.script=
user.country=CN
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=Service Pack 1
java.vm.specification.name=Java Virtual Machine Specification
user.dir=D:\tools\IntelliJIDEA15.0.2\IdeaProject2\starwifi
java.runtime.version=1.8.0_91-b15
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\jdk1.8.0_91\jre\lib\endorsed
os.arch=amd64
java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\
line.separator=
 
java.vm.specification.vendor=Oracle Corporation
user.variant=
os.name=Windows 7
classworlds.conf=D:\tools\apache-maven-3.3.9\bin\..\bin\m2.conf
sun.jnu.encoding=GBK
java.library.path=C:\Program Files\Java\jdk1.8.0_91\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\Oracle\Java\javapath;C:\
Windows\system32;C:\Windows;C:\Program Files\Java\jdk1.8.0_91\bin;D:\tools\apache-maven-3.3.9\bin;\C:\Windows\System32\Wbem;C:\Windows\System32\Window
sPowerShell\v1.0\;D:\tools\gradle-3.2.1\bin;C:\Program Files\TortoiseGit\bin;C:\Program Files\MySQL\MySQL Server 5.1\bin;.
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=6.1
user.home=C:\Users\Administrator
user.timezone=Asia/Shanghai
java.awt.printerjob=sun.awt.windows.WPrinterJob
java.specification.version=1.8
file.encoding=GBK
user.name=Administrator
java.class.path=D:\tools\apache-maven-3.3.9\bin\..\boot\plexus-classworlds-2.5.2.jar
java.vm.specification.version=1.8
sun.arch.data.model=64
java.home=C:\Program Files\Java\jdk1.8.0_91\jre
sun.java.command=org.codehaus.plexus.classworlds.launcher.Launcher help:system
java.specification.vendor=Oracle Corporation
user.language=zh
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.8.0_91
java.ext.dirs=C:\Program Files\Java\jdk1.8.0_91\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.path=C:\Program Files\Java\jdk1.8.0_91\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\rt.jar;C:\Program Files\Java\jdk
1.8.0_91\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jce.jar;C:\Program Files\
Java\jdk1.8.0_91\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_91\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_91\jre\classes
sun.stderr.encoding=ms936
java.vendor=Oracle Corporation
maven.home=D:\tools\apache-maven-3.3.9\bin\..
file.separator=\
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.stdout.encoding=ms936
sun.desktop=windows
sun.cpu.isalist=amd64
 
===============================================================================
Environment Variables
===============================================================================
 
GRADLE_USER_HOME=E:\gradle_repository\.gradle
CLASSWORLDS_JAR="D:\tools\apache-maven-3.3.9\bin\..\boot\plexus-classworlds-2.5.2.jar"
PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
COMMONPROGRAMW6432=C:\Program Files\Common Files
PROGRAMW6432=C:\Program Files
WINDOWS_TRACING_LOGFILE=C:\BVTBin\Tests\installpackage\csilogfile.log
PROCESSOR_ARCHITECTURE=AMD64
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
=D:=D:\tools\IntelliJIDEA15.0.2\IdeaProject2\starwifi
FP_NO_HOST_CHECK=NO
PATH=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Program Files\Java\jdk1.8.0_91\bin;D:\tools\apache-maven-3.3.9\bin;\C:\Wind
ows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\tools\gradle-3.2.1\bin;C:\Program Files\TortoiseGit\bin;C:\Program Files\MySQL\MySQL
Server 5.1\bin
PROGRAMDATA=C:\ProgramData
WDIR=D:\
SYSTEMROOT=C:\Windows
TMP=C:\Users\ADMINI~1\AppData\Local\Temp
PROGRAMFILES(X86)=C:\Program Files (x86)
EXEC_DIR=D:\tools\IntelliJIDEA15.0.2\IdeaProject2\starwifi
COMPUTERNAME=PC-20180423HOPQ
OS=Windows_NT
PROMPT=$P$G
MAVEN_HOME=D:\tools\apache-maven-3.3.9
WINDIR=C:\Windows
GRADLE_HOME=D:\tools\gradle-3.2.1
SYSTEMDRIVE=C:
=::=::\
COMSPEC=C:\Windows\system32\cmd.exe
=C:=C:\Users\Administrator
HOMEDRIVE=C:
LOGONSERVER=\\PC-20180423HOPQ
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 69 Stepping 1, GenuineIntel
COMMONPROGRAMFILES=C:\Program Files\Common Files
PROGRAMFILES=C:\Program Files
COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files
NUMBER_OF_PROCESSORS=4
TEMP=C:\Users\ADMINI~1\AppData\Local\Temp
USERDOMAIN=PC-20180423HOPQ
M2_HOME=D:\tools\apache-maven-3.3.9\bin\..
HOME=C:\Users\Administrator
PROCESSOR_LEVEL=6
ERROR_CODE=0
SESSIONNAME=Console
USERNAME=Administrator
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
WINDOWS_TRACING_FLAGS=3
PUBLIC=C:\Users\Public
PROCESSOR_REVISION=4501
USERPROFILE=C:\Users\Administrator
APPDATA=C:\Users\Administrator\AppData\Roaming
HOMEPATH=\Users\Administrator
LOCALAPPDATA=C:\Users\Administrator\AppData\Local
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_91
ALLUSERSPROFILE=C:\ProgramData
MAVEN_CMD_LINE_ARGS=help:system
MAVEN_PROJECTBASEDIR=D:\tools\IntelliJIDEA15.0.2\IdeaProject2\starwifi
MAVEN_JAVA_EXE="C:\Program Files\Java\jdk1.8.0_91\bin\java.exe"

  

转载于:https://www.cnblogs.com/liuys635/p/10239123.html

<think>嗯,用户之前已经询问过关于Mavenpom.xml中的变量设置,现在他们又进一步问到了pom用户相关属性变量。我需要确定他们具体想知道什么。可能他们是想了解用户自定义属性,或者如何在Maven中管理用户特定的配置,比如不同环境下的不同设置。 首先,回顾一下之前的回答,我已经介绍了pom.xml中的变量定义、应用场景、高级用法等。现在用户提到“用户相关属性变量”,这可能指的是用户自定义的属性,或者与用户环境相关的变量,比如系统属性环境变量,或者在Maven中如何区分不同用户的配置。 需要明确Maven中的属性类型,包括内置属性、项目属性、用户自定义属性环境变量系统属性。用户可能想知道如何在pom.xml中使用这些不同类型的属性,特别是用户相关的,比如如何在构建时动态传入用户特定的值,或者如何在不同的用户环境中切换配置。 另外,用户可能对如何在Maven配置文件中使用用户相关的属性感兴趣,比如通过profiles来管理不同用户的开发环境,或者如何在命令行中覆盖属性值。此外,资源过滤动态替换资源文件中的变量也可能是用户关心的点,特别是当不同用户有不同的配置需求时。 需要注意的是,用户可能在实际开发中遇到多环境配置的问题,比如开发、测试、生产环境的不同数据库连接,或者不同开发者有不同的本地路径设置。这时候,使用Maven属性profiles可以有效管理这些差异。 还要考虑用户提到的“用户相关”是否涉及安全性问题,比如敏感信息的处理。之前提到过不要在pom.xml中直接存储敏感数据,可能需要扩展说明如何通过环境变量或外部配置文件来管理用户特定的敏感信息。 总结一下,用户的需求可能包括以下几个方面: 1. 用户自定义属性的定义使用。 2. 如何通过命令行或系统属性动态设置属性。 3. 使用profiles管理不同用户或环境的配置。 4. 资源过滤动态替换用户特定配置。 5. 安全地处理用户相关的敏感信息。 在回答时,需要结构清晰,分点说明,涵盖不同类型的属性,并提供示例,特别是用户如何在实际中应用这些属性来解决多环境或多用户配置的问题。同时,强调最佳实践,如避免硬编码敏感信息,合理使用profiles资源过滤等。</think>在 Maven 的 `pom.xml` 中,**属性变量**分为两类: 1. **内置属性**(Maven 预定义) 2. **用户自定义属性**(开发者定义) 以下是详细分类使用场景: --- ### 一、内置属性系统自动生成) Maven POM 本身提供预定义变量,可直接引用: | 类型 | 变量示例 | 含义 | |------------------|--------------------------|--------------------------| | **项目属性** | `${project.groupId}` | 项目 Group ID | | | `${project.artifactId}` | 项目 Artifact ID | | | `${project.version}` | 项目版本号 | | **环境属性** | `${env.HOME}` | 操作系统环境变量(如用户目录) | | **Java 系统属性**| `${user.name}` | 当前操作系统用户名 | | | `${java.version}` | Java 版本 | | **路径属性** | `${basedir}` | 项目根目录 | | | `${project.build.directory}` | 构建输出目录(默认 `target`) | --- ### 二、用户自定义属性 在 `<properties>` 标签中声明,用于灵活管理配置: #### 1. **定义与引用** ```xml <properties> <!-- 自定义属性 --> <jdk.version>11</jdk.version> <custom.msg>Hello World</custom.msg> </properties> <!-- 引用示例 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${jdk.version}</source> <!-- 动态替换 --> <target>${jdk.version}</target> </configuration> </plugin> </plugins> </build> ``` #### 2. **多环境配置(结合 Profiles)** ```xml <!-- 定义不同环境 --> <profiles> <profile> <id>dev</id> <properties> <database.url>jdbc:mysql://localhost:3306/dev_db</database.url> </properties> </profile> <profile> <id>prod</id> <properties> <database.url>jdbc:mysql://prod-server:3306/prod_db</database.url> </properties> </profile> </profiles> <!-- 资源文件中使用变量 --> <!-- src/main/resources/config.properties --> db.url = ${database.url} <!-- 启用过滤后自动替换 --> ``` --- ### 三、用户级属性(外部注入) #### 1. **命令行动态传参** 通过 `-D` 覆盖属性值(优先级最高): ```bash mvn package -Djdk.version=17 -Dcustom.msg="Hello Maven" ``` #### 2. **系统属性环境变量** - **引用系统属性**(如 `user.home`): ```xml <properties> <user.dir>${user.home}/myapp</user.dir> <!-- 用户目录 --> </properties> ``` - **引用环境变量**: ```xml <properties> <env.path>${env.PATH}</env.path> <!-- 操作系统环境变量 --> </properties> ``` --- ### 四、关键应用场景 #### 1. **统一管理依赖版本** ```xml <properties> <spring.version>5.3.20</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> </dependencies> ``` #### 2. **动态生成配置文件** 启用资源过滤后,占位符会被替换: ```xml <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <!-- 开启过滤 --> </resource> </resources> </build> ``` 文件 `config.xml` 内容: ```xml <config> <welcome>${custom.msg}</welcome> <!-- 构建时替换为实际值 --> </config> ``` --- ### 五、注意事项 1. **优先级规则**: `命令行参数 > pom.xml 属性 > 父 POM 属性 > 系统/环境变量` 2. **敏感信息处理**: - **避免硬编码**:密码、密钥等敏感数据应通过外部配置(如 `settings.xml` 或环境变量)注入 - 示例(通过 Maven 配置): ```bash mvn deploy -Ddb.password=secret ``` 3. **资源过滤限制**: - 对二进制文件(如图片、压缩包)**禁用过滤**,防止内容损坏 - 排除特定文件: ```xml <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>**/*.zip</exclude> <!-- 不处理 ZIP 文件 --> </excludes> </resource> ``` --- ### 六、完整示例 ```xml <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>1.0.0</version> <properties> <!-- 用户自定义属性 --> <build.target>11</build.target> <deploy.env>dev</deploy.env> <!-- 引用内置属性 --> <output.dir>${project.build.directory}/classes</output.dir> </properties> <profiles> <profile> <id>dev</id> <properties> <deploy.env>dev</deploy.env> </properties> </profile> <profile> <id>prod</id> <properties> <deploy.env>prod</deploy.env> </properties> </profile> </profiles> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> </project> ``` --- 通过合理使用 **POM 属性** **用户级变量**,可以实现: ✅ 配置集中管理 ✅ 多环境快速切换 ✅ 避免重复代码 ✅ 提升构建灵活性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值