# 在当前 PowerShell 会话中加载 JDK 17 + Maven # 用法:. <仓库根>\tools\env-java.ps1 # # 查找顺序: # 1) 仓库内便携工具链 tools\jdk17\* + tools\maven\apache-maven-3.9.9(不入库,换机器需自备) # 2) 已导出的环境变量 $env:JAVA_HOME / $env:MAVEN_HOME # 3) PATH 上的 java / mvn(例:scoop/choco/winget 安装的) $ErrorActionPreference = 'Stop' $projectRoot = Split-Path -Parent $PSScriptRoot function Find-Jdk { $root = Join-Path $projectRoot 'tools\jdk17' $candidates = @() if (Test-Path $root) { $candidates += $root $candidates += Get-ChildItem $root -Directory -ErrorAction SilentlyContinue | ForEach-Object { $_.FullName } } if ($env:JAVA_HOME) { $candidates += $env:JAVA_HOME } return $candidates | Where-Object { $_ -and (Test-Path (Join-Path $_ 'bin\java.exe')) } | Select-Object -First 1 } function Find-Maven { $portable = Join-Path $projectRoot 'tools\maven\apache-maven-3.9.9' if (Test-Path (Join-Path $portable 'bin\mvn.cmd')) { return $portable } if ($env:MAVEN_HOME -and (Test-Path (Join-Path $env:MAVEN_HOME 'bin\mvn.cmd'))) { return $env:MAVEN_HOME } $onPath = Get-Command mvn -ErrorAction SilentlyContinue if ($onPath) { return Split-Path -Parent (Split-Path -Parent $onPath.Source) } return $null } $jdkHome = Find-Jdk if (-not $jdkHome) { throw "找不到 JDK 17:请安装 JDK 17 并设置 JAVA_HOME,或把便携版放到 tools\jdk17\" } $mavenHome = Find-Maven if (-not $mavenHome) { throw "找不到 Maven:请安装 Maven 3.9+ 并放到 PATH,或放便携版到 tools\maven\apache-maven-3.9.9" } $env:JAVA_HOME = $jdkHome $env:MAVEN_HOME = $mavenHome $env:PATH = "$jdkHome\bin;$mavenHome\bin;$env:PATH" Write-Host "JAVA_HOME=$env:JAVA_HOME" Write-Host "MAVEN_HOME=$env:MAVEN_HOME" # java/mvn 往 stderr 写版本信息,在 ErrorActionPreference=Stop 下会被当成终止错误,这里放宽 $ErrorActionPreference = 'Continue' java -version mvn -version