介绍
主要作用:
- 内置属性(预定义)
- 插件属性
- 指定java版本
- Java系统属性的直接引用
- 自定义,如 统一管理依赖版本号
内置属性(预定义)
下面是内置属性,可以通过${xxx}使用:
$ {project.basedir}:表示当前项目的根目录,即当前pom.xml文件所在的位置,还可以简化的写法:${basedir}
${project.version}:表示当前项目的版本,可以简写为: ${version}
${project.build.sourceDirectory}:表示项目的主源码目录,默认为src/main/java/
${project.build.testSourceDirectory}:项目的测试源码目录,默认为/src/test/java/
${project.build.directory}:表示项目的构建目录,默认值为 ${basedir}/target
${project.build.outputDirectory}:表示项目主代码编译输出目录,默认为 ${basedir}/target/classes
${project.build.testOutputDirectory}:表示项目测试代码编译输出目录,默认为 ${basedir}/target/test-classes
${project.build.sourceDirectory}:表示默认情况下src/main/java文件夹。
插件属性
设置编译版本
maven项目会用maven-compiler-plugin插件 默认的jdk版本 进行编译,如果不指明版本可能 出现版本不匹配的问题,可能导致 编译不通过的问题
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
设置编码集
<properties>
<!-- 文件拷贝时的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 编译时的编码 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
不写<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>,编译时可能警告:
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
在插件中指定
上面声明在全局中,插件可自动识别,还有另一种配置,不用上面全局配置,而是在插件内指定
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
指定java版本
指定java版本,否则idea可能会报错
<java.version>1.8</java.version>
Java系统属性的直接引用
java.util.Properties properties = java.lang.System.getProperties();
java.util.Set<String> propertiesNames = properties.stringPropertyNames();
int maxLenth = 0;
for (String proName : propertiesNames){
if (proName.length() > maxLenth){
maxLenth = proName.length();
}
}
for (String proName : propertiesNames){
System.out.print(proName + ":" );
int difVal = maxLenth - proName.length();
for (int i = 0 ; i <= difVal ; i++){
System.out.print(" ");
}
System.out.println(properties.get(proName));
}
执行结果:
java.runtime.name: Java(TM) SE Runtime Environment
sun.boot.library.path: C:\Program Files\Java\jdk1.8.0_171\jre\bin
java.vm.version: 25.171-b11
java.vm.vendor: Oracle Corporation
java.vendor.url: http://java.oracle.com/
path.separator: ;
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:
java.vm.specification.name: Java Virtual Machine Specification
user.dir: D:\ideaProject\demo\demo-parent
java.runtime.version: 1.8.0_171-b11
java.awt.graphicsenv: sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs: C:\Program Files\Java\jdk1.8.0_171\jre\lib\endorsed
os.arch: amd64
java.io.tmpdir: C:\Users\lincf\AppData\Local\Temp\
line.separator:
java.vm.specification.vendor: Oracle Corporation
user.variant:
os.name: Windows 10
sun.jnu.encoding: GBK
java.library.path: C:\Program Files\Java\jdk1.8.0_171\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;"C:\Program Files\Java\jdk1.8.0_171\bin;C:\Program Files\Java\jdk1.8.0_171\jre\bin";D:\apache-maven-3.6.1\bin;D:\mysql-5.7.22-winx64\bin;C:\Users\lincf\Downloads\apache-tomcat-8.5.32-windows-x64\apache-tomcat-8.5.32\bin;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\TortoiseSVN\bin;D:\DB29.5\BIN;D:\DB29.5\FUNCTION;D:\DB29.5\SAMPLES\REPL;C:\Program Files\nodejs\;D:\yarn\bin\;C:\Users\lincf\AppData\Local\Microsoft\WindowsApps;C:\Users\lincf\AppData\Roaming\npm;C:\Users\lincf\AppData\Local\Yarn\bin;.
java.specification.name: Java Platform API Specification
java.class.version: 52.0
sun.management.compiler: HotSpot 64-Bit Tiered Compilers
os.version: 10.0
user.home: C:\Users\lincf
user.timezone:
java.awt.printerjob: sun.awt.windows.WPrinterJob
file.encoding: UTF-8
java.specification.version: 1.8
user.name: Kern
java.class.path: C:\Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar;D:\ideaProject\demo\demo-parent\demo-dao\target\classes;D:\IntelliJ IDEA 2018.1.4\lib\idea_rt.jar
java.vm.specification.version: 1.8
sun.arch.data.model: 64
java.home: C:\Program Files\Java\jdk1.8.0_171\jre
sun.java.command: com.demo.App
java.specification.vendor: Oracle Corporation
user.language: zh
awt.toolkit: sun.awt.windows.WToolkit
java.vm.info: mixed mode
java.version: 1.8.0_171
java.ext.dirs: C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
sun.boot.class.path: C:\Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_171\jre\classes
java.vendor: Oracle Corporation
file.separator: \
java.vendor.url.bug: http://bugreport.sun.com/bugreport/
sun.cpu.endian: little
sun.io.unicode.encoding: UnicodeLittle
sun.desktop: windows
sun.cpu.isalist: amd64
上面属性可以在pom.xml中使用,如:${java.vm.version}