在不能使用maven的情况下,使用PowerShell做生成脚本便于跨平台一次写完到处运行,比.sh+.cmd双实现要方便。PowerShell本身是开源的,也算满足自主可控限制。
指定class目标JRE版本需要的javac参数项(PowerShell Core for Linux上失效,不过一般工业软件又是国产Linux系统上带的都是JDK 1.8)
$javacTargetVerb = if ((Get-Command java).Version.Major -gt 8) { "--release", "8" } else { "-target", "8" }
拼接-cp
,以几个commons.apache.org
包为例
$dirsep = if ($IsLinux) { ":" } else { ";" }
$dependedJars = "../lib/commons-io-2.6.jar", "../lib/commons-math3-3.6.1.jar"
$dependedJars = [String]::new(($dependedJars | ForEach-Object { ($dirsep + """$_""").ToCharArray() }))
$dependedJars = "-cp", $dependedJars.Substring(1) # 或者"bin"+$dependedJars之类的
在src代码目录下执行javac
javac $javacTargetVerb $dependedJars `
-Xlint:deprecation -Xlint:unchecked -encoding utf-8 -d ../bin `
(Get-ChildItem -Recurse -Include *.java)
在src代码目录下执行javadoc
javadoc -quiet $dependedJars `
-encoding utf-8 -docencoding utf-8 -public -d ../doc `
(Get-ChildItem -Recurse -Include *.java)