Add SSM deployment and reliable Maven setup

This commit is contained in:
王鹏
2026-10-08 17:58:09 +08:00
parent 2d7b6216ba
commit d1695eba74
13 changed files with 626 additions and 46 deletions

View File

@@ -14,6 +14,7 @@ CommandRunner = Callable[[list[str]], subprocess.CompletedProcess[str]]
DEFAULT_CHECKS: dict[str, list[str]] = {
"JDK": ["java", "-version"],
"Maven": ["mvn", "-version"],
"Tomcat": ["catalina.bat", "version"],
"Gradle": ["gradle", "-version"],
"Node.js": ["node", "--version"],
"npm": ["npm", "--version"],
@@ -25,6 +26,7 @@ DEFAULT_CHECKS: dict[str, list[str]] = {
EXECUTABLE_NAMES: dict[str, list[str]] = {
"JDK": ["java.exe", "java"],
"Maven": ["mvn.cmd", "mvn.bat", "mvn"],
"Tomcat": ["catalina.bat", "catalina.sh"],
"Gradle": ["gradle.bat", "gradle"],
"Node.js": ["node.exe", "node"],
"npm": ["npm.cmd", "npm"],
@@ -151,7 +153,11 @@ def _try_command(name: str, command: list[str], source: str, runner: CommandRunn
def _run_command(command: list[str]) -> subprocess.CompletedProcess[str]:
return subprocess.run(command, capture_output=True, text=True, timeout=6, shell=False)
environment = os.environ.copy()
executable = Path(command[0])
if executable.name.lower() in {"catalina.bat", "catalina.sh"} and executable.exists():
environment["CATALINA_HOME"] = str(executable.parent.parent)
return subprocess.run(command, capture_output=True, text=True, timeout=6, shell=False, env=environment)
def _combine_output(completed: subprocess.CompletedProcess[str]) -> str:
@@ -175,6 +181,8 @@ def _direct_candidates(name: str, root: Path) -> list[Path]:
return [root / "nodejs" / "npm.cmd", root / "Programs" / "nodejs" / "npm.cmd"]
if name == "Maven":
return _glob(root, "apache-maven*/bin/mvn.cmd")
if name == "Tomcat":
return _glob(root, "apache-tomcat*/bin/catalina.bat")
if name == "Gradle":
return _glob(root, "gradle*/bin/gradle.bat")
if name == "Git":