You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Onlineeducation/mvnw.cmd

286 lines
13 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

@REM ----------------------------------------------------------------------------
@REM 此注释块表明该文件遵循 Apache 软件基金会的许可协议
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM 可能有一个或多个贡献者与 ASF 签订了许可协议
@REM or more contributor license agreements. See the NOTICE file
@REM 查看随此项目一同分发的 NOTICE 文件,获取更多版权信息
@REM distributed with this work for additional information
@REM 关于版权归属的详细信息
@REM regarding copyright ownership. The ASF licenses this file
@REM ASF 根据 Apache 许可证 2.0 版本将此文件授权给你
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM 除非你遵守该许可协议,否则不能使用此文件
@REM with the License. You may obtain a copy of the License at
@REM 你可以在下面的链接获取许可协议副本
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM 除非适用法律要求或书面同意
@REM software distributed under the License is distributed on an
@REM 根据许可协议分发的软件按“原样”分发
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM 不附带任何形式的明示或暗示保证和条件
@REM KIND, either express or implied. See the License for the
@REM 查看许可协议以了解相关权限和限制的具体条款
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM 此注释块介绍了这是一个 Maven2 的启动批处理脚本
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM 必需的环境变量
@REM JAVA_HOME - location of a JDK home dir
@REM JAVA_HOME 环境变量,指向 JDK 的安装目录
@REM
@REM Optional ENV vars
@REM 可选的环境变量
@REM M2_HOME - location of maven2's installed home dir
@REM M2_HOME 环境变量,指向 Maven2 的安装目录
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_ECHO 环境变量,设置为 'on' 可启用批处理命令的回显
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_BATCH_PAUSE 环境变量,设置为 'on' 可在脚本结束前等待按键
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM MAVEN_OPTS 环境变量,用于在运行 Maven 时传递给 Java 虚拟机的参数
@REM e.g. to debug Maven itself, use
@REM 例如,要调试 Maven 本身,可使用以下设置
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM MAVEN_SKIP_RC 环境变量,用于禁用加载 mavenrc 文件的标志
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@REM 以 '@' 开头的 REM 行,防止在 MAVEN_BATCH_ECHO 为 'on' 时回显注释
@echo off
@REM 关闭命令回显,避免在执行脚本时显示命令本身
@REM set title of command window
@REM 设置命令窗口的标题
title %0
@REM 将命令窗口的标题设置为当前脚本的名称
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@REM 通过将 MAVEN_BATCH_ECHO 设置为 'on' 来启用命令回显
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM 如果 MAVEN_BATCH_ECHO 环境变量的值为 'on',则开启命令回显
@REM set %HOME% to equivalent of $HOME
@REM 将 %HOME% 环境变量设置为与 $HOME 等效的值
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM 如果 %HOME% 环境变量未设置,则将其设置为当前用户的主目录
@REM Execute a user defined script before this one
@REM 在执行此脚本之前执行用户定义的脚本
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM 如果 MAVEN_SKIP_RC 环境变量不为空,则跳过执行用户定义的前置脚本
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
@REM 检查是否存在前置脚本,分别检查以 .bat 和 .cmd 结尾的文件
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
@REM 如果存在 %HOME%\mavenrc_pre.bat 文件,则调用该脚本
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
@REM 如果存在 %HOME%\mavenrc_pre.cmd 文件,则调用该脚本
:skipRcPre
@REM 跳过执行用户定义的前置脚本的标签
@setlocal
@REM 开启本地环境变量作用域,确保后续设置的变量只在当前脚本块内有效
set ERROR_CODE=0
@REM 初始化错误代码为 0表示脚本执行正常
@REM To isolate internal variables from possible post scripts, we use another setlocal
@REM 为了将内部变量与可能的后置脚本隔离开,我们再次使用 setlocal
@setlocal
@REM ==== START VALIDATION ====
@REM 开始验证环境变量
if not "%JAVA_HOME%" == "" goto OkJHome
@REM 如果 JAVA_HOME 环境变量已设置,则跳转到 OkJHome 标签
echo.
echo Error: JAVA_HOME not found in your environment. >&2
@REM 输出错误信息,提示 JAVA_HOME 环境变量未找到
echo Please set the JAVA_HOME variable in your environment to match the >&2
@REM 提示用户设置 JAVA_HOME 环境变量
echo location of your Java installation. >&2
@REM 提示用户将 JAVA_HOME 设置为 Java 安装目录
echo.
goto error
@REM 跳转到 error 标签,处理错误情况
:OkJHome
@REM JAVA_HOME 环境变量已设置的标签
if exist "%JAVA_HOME%\bin\java.exe" goto init
@REM 如果 JAVA_HOME\bin\java.exe 文件存在,则跳转到 init 标签
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
@REM 输出错误信息,提示 JAVA_HOME 设置为无效目录
echo JAVA_HOME = "%JAVA_HOME%" >&2
@REM 显示当前 JAVA_HOME 的值
echo Please set the JAVA_HOME variable in your environment to match the >&2
@REM 提示用户设置正确的 JAVA_HOME 环境变量
echo location of your Java installation. >&2
@REM 提示用户将 JAVA_HOME 设置为 Java 安装目录
echo.
goto error
@REM 跳转到 error 标签,处理错误情况
@REM ==== END VALIDATION ====
@REM 结束环境变量验证
:init
@REM 初始化标签
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM 查找项目的基础目录,即包含 .mvn 文件夹的目录
@REM Fallback to current working directory if not found.
@REM 如果未找到,则使用当前工作目录作为基础目录
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
@REM 将 MAVEN_PROJECTBASEDIR 环境变量设置为 MAVEN_BASEDIR 的值
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
@REM 如果 MAVEN_PROJECTBASEDIR 环境变量不为空,则跳转到 endDetectBaseDir 标签
set EXEC_DIR=%CD%
@REM 将 EXEC_DIR 环境变量设置为当前工作目录
set WDIR=%EXEC_DIR%
@REM 将 WDIR 环境变量设置为当前工作目录
:findBaseDir
@REM 查找基础目录的标签
IF EXIST "%WDIR%"\.mvn goto baseDirFound
@REM 如果当前目录下存在 .mvn 文件夹,则跳转到 baseDirFound 标签
cd ..
@REM 切换到上一级目录
IF "%WDIR%"=="%CD%" goto baseDirNotFound
@REM 如果已经到达根目录,则跳转到 baseDirNotFound 标签
set WDIR=%CD%
@REM 更新 WDIR 环境变量为当前目录
goto findBaseDir
@REM 继续查找基础目录
:baseDirFound
@REM 找到基础目录的标签
set MAVEN_PROJECTBASEDIR=%WDIR%
@REM 将 MAVEN_PROJECTBASEDIR 环境变量设置为找到的基础目录
cd "%EXEC_DIR%"
@REM 切换回原来的工作目录
goto endDetectBaseDir
@REM 跳转到 endDetectBaseDir 标签
:baseDirNotFound
@REM 未找到基础目录的标签
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
@REM 将 MAVEN_PROJECTBASEDIR 环境变量设置为当前工作目录
cd "%EXEC_DIR%"
@REM 切换回原来的工作目录
:endDetectBaseDir
@REM 结束基础目录检测的标签
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@REM 如果 %MAVEN_PROJECTBASEDIR%\.mvn\jvm.config 文件不存在,则跳转到 endReadAdditionalConfig 标签
@setlocal EnableExtensions EnableDelayedExpansion
@REM 开启扩展和延迟环境变量扩展
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@REM 读取 %MAVEN_PROJECTBASEDIR%\.mvn\jvm.config 文件的内容,并将其添加到 JVM_CONFIG_MAVEN_PROPS 环境变量中
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
@REM 结束本地环境变量作用域,并将 JVM_CONFIG_MAVEN_PROPS 环境变量传递到外部
:endReadAdditionalConfig
@REM 结束读取额外配置文件的标签
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
@REM 设置 MAVEN_JAVA_EXE 环境变量为 Java 可执行文件的路径
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
@REM 设置 WRAPPER_JAR 环境变量为 Maven 包装器 JAR 文件的路径
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
@REM 设置 WRAPPER_LAUNCHER 环境变量为 Maven 包装器的主类名
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
@REM 设置 DOWNLOAD_URL 环境变量为 Maven 包装器 JAR 文件的下载地址
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM 读取 %MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties 文件,查找 wrapperUrl 属性,并更新 DOWNLOAD_URL 环境变量
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM 扩展功能,允许自动从 Maven 中央仓库下载 maven-wrapper.jar 文件
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
@REM 这允许在禁止提交二进制数据的项目中使用 Maven 包装器
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM 扩展功能结束
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM 提供一种“标准化”的方式来获取命令行参数
@REM work with both Windows and non-Windows executions.
@REM 适用于 Windows 和非 Windows 系统的执行环境
set MAVEN_CMD_LINE_ARGS=%*
@REM 将 MAVEN_CMD_LINE_ARGS 环境变量设置为所有命令行参数
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
@REM 执行 Java 命令,启动 Maven 包装器
if ERRORLEVEL 1 goto error
@REM 如果执行 Java 命令返回错误码,则跳转到 error 标签
goto end
@REM 跳转到 end 标签
:error
@REM 错误处理标签
set ERROR_CODE=1
@REM 设置错误代码为 1表示脚本执行出错
:end
@REM 结束标签
@endlocal & set ERROR_CODE=%ERROR_CODE%
@REM 结束本地环境变量作用域,并将错误代码传递到外部
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM 如果 MAVEN_SKIP_RC 环境变量不为空,则跳过执行用户定义的后置脚本
@REM check for post script, once with legacy .bat ending and once with .cmd ending
@REM 检查是否存在后置脚本,分别检查以 .bat 和 .cmd 结尾的文件
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
@REM 如果存在 %HOME%\mavenrc_post.bat 文件,则调用该脚本
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
@REM 如果存在 %HOME%\mavenrc_post.cmd 文件,则调用该脚本
:skipRcPost
@REM 跳过执行用户定义的后置脚本的标签
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
@REM 如果 MAVEN_BATCH_PAUSE 环境变量设置为 'on',则暂停脚本执行
if "%MAVEN_BATCH_PAUSE%" == "on" pause
@REM 等待用户按键
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
@REM 如果 MAVEN_TERMINATE_CMD 环境变量设置为 'on',则退出命令提示符并返回错误代码
exit /B %ERROR_CODE%
@REM 退出当前批处理脚本并返回错误代码