纯命令编译与构建 Java 项目
部分脚本依赖 PowerShell 7
javac -d .\build\classes\ .\src\com\icuxika\Single.java
java --class-path .\build\classes\ com.icuxika.Single
jar -cef com.icuxika.Single .\build\libs\single.jar -C .\build\classes\ .
Get-ChildItem -Path .\src\ -Recurse -Filter *.java | Select-Object -ExpandProperty FullName | Out-File sources.txt; javac -d .\build\classes\ "@sources.txt"; Remove-Item sources.txt
java --class-path .\build\classes\ com.icuxika.Main
jar -cef com.icuxika.Main .\build\libs\hello.jar -C .\build\classes\ .
jar --create --file .\build\libs\hello.jar --main-class com.icuxika.Main -C .\build\classes\ .
java -jar .\build\libs\hello.jar
mkdir library
Invoke-WebRequest -Uri https://repo1.maven.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar -OutFile .\library\gson-2.10.1.jar
Get-ChildItem -Path .\src\ -Recurse -Filter *.java | Select-Object -ExpandProperty FullName | Out-File sources.txt; javac --class-path .\library\* -d .\build\classes\ "@sources.txt"; Remove-Item sources.txt
java --class-path ".\library\*;.\build\classes\" com.icuxika.Main
"Class-Path: " + (Get-ChildItem -Path .\library\ -Filter *.jar | Select-Object -ExpandProperty Name | Join-String -Separator " ") | Out-File Manifest.txt
jar --create --file .\build\libs\hello.jar -m Manifest.txt --main-class com.icuxika.Main -C .\build\classes\ .
jar -cemf com.icuxika.Main Manifest.txt .\build\libs\hello.jar -C .\build\classes\ .
Get-ChildItem -Path .\library\ -Filter *.jar | Select-Object -ExpandProperty FullName | ForEach-Object { Copy-Item $_ -Destination .\build\libs\ }
Remove-Item .\Manifest.txt
java -jar .\build\libs\hello.jar
--win-console
用来支持标准输出流System.out.println
jpackage.exe --type app-image -i .\build\libs\ -n Hello --main-class com.icuxika.Main --main-jar .\hello.jar --dest .\build\image --win-console
.\build\image\Hello\Hello.exe
- 项目模块化
- jlink 与 jpackage
module hello {
requires com.google.gson;
opens com.icuxika.entity to com.google.gson;
exports com.icuxika;
}
Get-ChildItem -Path .\src\ -Recurse -Filter *.java | Select-Object -ExpandProperty FullName | Out-File sources.txt; javac --module-path .\library\ -d .\build\classes\ "@sources.txt"; Remove-Item sources.txt
java --module-path ".\library\;.\build\classes\" -m "hello/com.icuxika.Main"
与
引入三方库
一致
与
引入三方库
一致
jlink.exe --module-path .\build\libs\ --add-modules java.base,hello --launcher Hello=hello/com.icuxika.Main --compress=2 --no-header-files --no-man-pages --strip-debug --output .\build\jlink-build-dir