# CallbackUrlAuditProbe 的运行脚本(只读排查探针)。
|
#
|
# 机制与 docs/audits/2026-09-10/run-probe.ps1 一致:先用 Maven 拿到 target/classes 与依赖 classpath,
|
# 再单独 javac 这个探针(它不在 src/main/java 下,所以不进 Maven 编译),最后 java 跑它。
|
#
|
# 本探针不连数据库、不连通道,只读一个配置文件——所以除了 -Config 以外什么都不用给。
|
#
|
# 用法示例:
|
# .\run-CallbackUrlAuditProbe.ps1 -Config .\huifu-probe.properties
|
param(
|
[Parameter(Mandatory = $true)][string] $Config,
|
[ValidateSet('test', 'prod')][string] $HuifuEnvironment,
|
[switch] $SkipBuild
|
)
|
|
$ErrorActionPreference = 'Stop'
|
|
$probeArgs = @("--config=$Config")
|
if ($HuifuEnvironment) { $probeArgs += "--huifu-environment=$HuifuEnvironment" }
|
|
$serverRoot = (Resolve-Path (Join-Path $PSScriptRoot '../..')).Path
|
Push-Location $serverRoot
|
try {
|
$classpathFile = 'target/probes/classpath.txt'
|
# -SkipBuild 是给「同一 checkout 一次只跑一个 Maven 构建」这条硬约束准备的:已经构建过就别再起一个。
|
if ($SkipBuild -and (Test-Path $classpathFile)) {
|
Write-Host "跳过 Maven,复用 $classpathFile" -ForegroundColor Cyan
|
} else {
|
$maven = (Get-Command mvn -ErrorAction SilentlyContinue).Source
|
if (-not $maven) { $maven = Join-Path $serverRoot 'mvnw.cmd' }
|
& $maven -q -DskipTests compile dependency:build-classpath "-Dmdep.outputFile=$classpathFile" '-Dmdep.includeScope=test'
|
if ($LASTEXITCODE -ne 0) { throw 'Maven preparation failed' }
|
}
|
$probeCp = (Get-Content $classpathFile -Raw).Trim()
|
& javac -encoding UTF-8 -cp "target/classes;$probeCp" -d target/probes (Join-Path $PSScriptRoot 'CallbackUrlAuditProbe.java')
|
if ($LASTEXITCODE -ne 0) { throw 'Probe compilation failed' }
|
& java -cp "target/probes;target/classes;$probeCp" CallbackUrlAuditProbe @probeArgs
|
if ($LASTEXITCODE -ne 0) { throw "Probe exited with $LASTEXITCODE" }
|
} finally {
|
Pop-Location
|
}
|