maven pom.xml <properties>标签使用

介绍

主要作用:

  1. 内置属性(预定义)
  2. 插件属性
  3. 指定java版本
  4. Java系统属性的直接引用
  5. 自定义,如 统一管理依赖版本号

内置属性(预定义)

下面是内置属性,可以通过${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}


原文出处:/show_1EF5g2l392Zg.html