
OpenAPI Generator 如何固定 CLI 版本保证构建可复现【免费下载链接】openapi-generatorOpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)项目地址: https://gitcode.com/GitHub_Trending/op/openapi-generator如果你的 CI 或本地构建脚本依赖 OpenAPI Generator 生成的代码那么每次构建时 CLI 实际使用的版本必须一致否则生成结果可能在不同时间、不同机器上产生差异。OpenAPI Generator 的默认安装路径有多处会“跟随最新版”npm 全局安装装的是最新 wrapperBash launcher 脚本在调用时会查询 GitHub 仓库的最新 release 并自动下载新版 jarJBang 示例直接使用LATEST。安装文档针对每种安装方式都给出了把版本固定在指定 release 的办法。本文按安装方式给出固定版本的具体命令以及用version命令验证固定是否生效的方法。先确认当前安装方式是否会漂移版本固定版本前先确认自己走的是哪条安装路径因为每条路径的默认行为不同npm 全局安装npm install openapitools/openapi-generator-cli -g安装的是 wrapper 的最新版本需要额外执行version-manager set把底层 jar 锁定到目标 release。PyPIpip install openapi-generator-cli不带版本号时装最新 release需要显式指定版本。直接下载 JARURL 里带版本号固定到哪个版本就下载哪个版本的 jar天然可复现前提是 URL 不改动。Bash launcher 脚本不设置版本变量时每次调用都会查询最新 release发现新版本就下载并执行必须通过OPENAPI_GENERATOR_VERSION变量锁定。JBang官方示例命令为jbang --java 11 org.openapitools:openapi-generator-cli:LATEST help其中LATEST不是固定版本文档未给出 JBang 固定版本的写法需要固定版本时建议改用下面 JAR 或 npm 路径。按安装方式固定版本以下命令中出现的7.25.0是文档当前 release 示例使用的版本!-- RELEASE_VERSION --标记的内容会随 release 更新实际使用时替换为你要固定的版本。npm用 version-manager 锁定 jar 版本先全局安装 wrapper再执行version-manager set指定版本见 docs/installation.mdnpm install openapitools/openapi-generator-cli -g openapi-generator-cli version-manager set 7.25.0另一种可选路径是把它装成项目的 dev dependency让版本随项目的package.json/lockfile 一起被仓库管理npm install openapitools/openapi-generator-cli -D随后用npx调用。npx会优先执行全局可用的openapi-generator找不到时回退到项目本地的命令因此无论用哪种安装方式下面的生成命令都能工作npx openapitools/openapi-generator-cli generate -i petstore.yaml -g ruby -o /tmp/test/PyPI用 pip 的语法指定版本pip方式运行需要系统里有java可执行文件。固定版本README.md 1.8 节pip install openapi-generator-cli7.25.0不跟 Java 也可以改用pip install openapi-generator-cli[jdk4py]要求 python3.10但这改变的是运行时依赖而非 CLI 版本固定版本仍需上面的写法。直接下载 JARURL 本身即版本固定JAR 路径对可复现构建最直接Maven Central 上的每个版本 jar 都有固定 URL下载一次后构建只依赖本地文件。文档给出的 7.25.0 示例Mac/Linuxwget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.25.0/openapi-generator-cli-7.25.0.jar -O openapi-generator-cli.jarWindows 用 PowerShellInvoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.25.0/openapi-generator-cli-7.25.0.jar该路径要求 Java 11 及以上运行时。Mac 用户可用java -version检查版本并通过导出JAVA_HOME指向受支持的 Java 版本export JAVA_HOME/usr/libexec/java_home -v 1.11 export PATH${JAVA_HOME}/bin:$PATH下载后先跑java -jar openapi-generator-cli.jar help查看用法确认 jar 可用。Bash launcher 脚本用 OPENAPI_GENERATOR_VERSION 锁定如果团队使用仓库提供的 Bash launcher 脚本docs/installation.md 的 Bash Launcher Script 一节文档明确警告不固定版本时脚本会跟随最新 release。固定方式是通过OPENAPI_GENERATOR_VERSION变量按作用域从小到大分三档# 仅当前这一次调用固定到 3.1.0 OPENAPI_GENERATOR_VERSION3.1.0 openapi-generator-cli version # 当前 shell 会话内所有调用固定到 3.0.2 export OPENAPI_GENERATOR_VERSION3.0.2 # “安装”某个固定版本写入 ~/.bashrc此后所有新 shell 都用 3.0.2 echo export OPENAPI_GENERATOR_VERSION3.0.2 ~/.bashrc source ~/.bashrc写~/.bashrc会影响该用户之后打开的每个 shellCI 环境建议用前两种方式单次调用或会话级export避免污染全局环境。验证固定是否生效验证手段是version命令。openapi-generator-cli version默认返回版本号加--sha返回 git commit sha加--full返回详细版本信息完整选项见 docs/usage.md 的 version 一节。Bash launcher 路径下文档给出的示例输出文档示例数字对应该示例中固定的版本换成你固定的版本后输出应一致openapi-generator-cli version # is 3.0.2 openapi-generator-cli version # is also 3.0.2对 JAR 路径java -jar openapi-generator-cli.jar help能正常列出author / batch / config-help / generate / help / list / meta / validate / version等命令即说明 jar 可用再执行java -jar openapi-generator-cli.jar version确认版本号。验证通过后跑一次真实生成确认整条链路在这个固定版本上工作openapi-generator-cli generate -i petstore.yaml -g ruby -o /tmp/test/其中-i指向你的 OpenAPI 文档上面示例用petstore.yaml占位替换为实际 spec 路径仓库内可参考 modules/openapi-generator/src/test/resources/3_0/petstore.yaml-g选择生成器-o指定输出目录。generate最少需要-g、-o、-i三个参数。在 Maven / Gradle 构建中固定版本如果生成步骤集成在构建工具里版本固定落在插件依赖上插件坐标本身就是固定的Maven 插件在pom.xml的build - plugins中写死versiondocs/plugins.md 示例默认在generate-sources阶段执行plugin groupIdorg.openapitools/groupId artifactIdopenapi-generator-maven-plugin/artifactId version7.25.0/version executions execution goals goalgenerate/goal /goals configuration inputSpec${project.basedir}/src/main/resources/api.yaml/inputSpec generatorNamejava/generatorName configOptions sourceFoldersrc/gen/java/main/sourceFolder /configOptions /configuration /execution /executions /pluginGradle 插件在build.gradle的buildscript.dependencies.classpath中写死版本文档示例使用的是6.6.0这是文档原样给出的示例值实际按你需要固定的版本替换buildscript { repositories { mavenLocal() mavenCentral() } dependencies { classpath org.openapitools:openapi-generator-gradle-plugin:6.6.0 } } apply plugin: org.openapi.generatorMill 构建则在mvnDeps注释行写死插件版本文档示例为7.25.0。限制与注意文档中的 JBang 示例使用LATEST未提供 JBang 固定版本的写法Docker 运行示例openapitools/openapi-generator-cli镜像也未标注镜像 tag两者若用于构建文档本身没有给出固定版本的做法选型时需注意。Bash launcher 脚本的固定版本依赖环境变量未export或写入 shell 配置时不生效OPENAPI_GENERATOR_VERSION支持3.1.0-SNAPSHOT这类快照值生产构建建议只用正式 release 版本号。Maven 插件固定的是插件自身版本其调用的 generator 行为随插件版本走升级version前可参考 docs/migration-guide.adoc 了解相邻版本间的行为变化。【免费下载链接】openapi-generatorOpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)项目地址: https://gitcode.com/GitHub_Trending/op/openapi-generator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考