1. 設置 Java JDK 的版本為「JDK 1.8」
可以修改 pom.xml 添加如下語句實現使用 Java 8 語言特性,共有兩種方式,可任選其一:
1.1 添加 property
<code><project>
[...]
<properties>
<maven.compiler.source>1.8/<maven.compiler.source>
<maven.compiler.target>1.8/<maven.compiler.target>
/<properties>
[...]
/<project>/<code>
1.2 直接配置插件
<code><project>
[...]
<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>
/<configuration>
/<plugin>
/<plugins>
[...]
/<build>
[...]
/<project>/<code>
2. Maven 構建生成可執行的 Jar
2.1 簡單構建可執行的 Jar
<code><project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactid>maven-assembly-plugin/<artifactid>
<version>3.0.0/<version>
<configuration>
[...]
<archive>
<manifest>
<mainclass>org.sample.App/<mainclass>
/<manifest>
/<archive>
/<configuration>
[...]
/<plugin>
[...]
/<plugins>/<build>/<project>/<code>
此時可使用如下命令構建可執行 Jar
<code>mvn assembly:single/<code>
2.2 將 Assembly 的 single 目標綁定到項目的構建生命週期中
可在 pom.xml 文件中添加如下內容:
<code><project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactid>maven-assembly-plugin/<artifactid>
<version>3.0.0/<version>
<configuration>
<appendassemblyid>true/<appendassemblyid>
<archive>
<manifest>
<mainclass>cc.bitky.fx.Main/<mainclass>
/<manifest>
/<archive>
<descriptorrefs>
<descriptorref>jar-with-dependencies/<descriptorref>
/<descriptorrefs>
/<configuration>
<executions>
<execution>
make-assembly
<phase>package/<phase>
<goals>
<goal>single/<goal>
/<goals>
/<execution>
/<executions>
/<plugin>
/<plugins>
[...]
/<build>
/<project>/<code>
之後,為了生成項目的 Jar 文件,可以簡單地執行如下生命週期階段命令:
<code>mvn package/<code>
構建完畢後,可以看到已經生成了類似於以下名字的文件:
<code>target / sample-1.0-SNAPSHOT-jar-with-dependencies.jar
target / sample-1.0.jar/<code>
appendAssemblyId: 控制是否在已生成的文件的文件名中包含「ssembly id」。
execution: 用於將 maven-assembly-plugin 集成至標準的 Maven 構建生命週期中,此時執行 maven package 時就會執行指定的操作,從而實現自定義打包。
2.3 Assembly 插件的 Maven Goals
- assembly:assembly: 「已棄用」會自動執行 package 生命週期。
- assembly:single: 僅會裝配成 jar-with-dependencies,我們不想讓 package 階段運行兩次 package,所以配置為這個。
3. 可執行 Jar 文件執行時出現亂碼
使用 Maven 生成的可執行 Jar 文件,在 cmd 中執行時出現亂碼,項目編碼統一為 UTF-8,日誌使用 SLF4J 框架。
3.1 方法 1:windows 默認使用 GBK 編碼,執行 Jar 時動態指定編碼
運行 java -jar 命令時添加參數
<code>-Dfile.encoding=UTF-8 /<code>
格式如下:
<code>java -jar -Dfile.encoding=UTF-8 simpler.jar /<code>
或添加環境變量:
<code>JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF-8/<code>
3.2 使用臨時的活動代碼頁運行
在控制檯執行命令:
<code>chcp 65001/<code>
可將當前 cmd 的編碼臨時變為 UTF-8,執行 chcp 命令可顯示當前 cmd 的編碼。
4. Maven 中讀取資源文件
在 Maven 項目的根目錄下,有如下必要的目錄結構:
src main resources「存放一些資源文件」 java test resources「存放一些資源文件」 java pom.xml
在項目的 compile 時期,所有的資源文件和 .class 文件均被複制到 target/classes/ 目錄中,獲取資源文件,可參考如下語句:
<code>1. this.getClass().getResource("")
//得到的是當前類 class 文件所在的目錄 URL。
2. this.getClass().getResource("/")
3. this.getClass().getClassLoader().getResource("")
4. ClassLoader.getSystemResource("")
5. Thread.currentThread().getContextClassLoader().getResource("")
//得到的是當前 ClassPath 的絕對 URI 路徑。/<code>
所以,如若想要獲取 resources 文件夾中的資源文件 ky.xml,可使用如下語句之一:
<code>getClass().getClassLoader().getResource("ky.xml")
getClass().getResource("/ky.xml")/<code>
閱讀更多 歷史探祕分享君 的文章