- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Maven 项目,我的 API 定义使用 OpenaAPI v3 规范。
我使用 openapi-generator-maven-plugin 生成代码,一切正常。我还能够访问 swagger-ui 并查看和测试我的 API。
问题是我不想维护版本号两次。所以我想在我的 api 规范中引用我的 maven pom 的版本号,而不是复制它,因为它有过时的风险。
我已经尝试过 maven 资源过滤,这似乎有效。由于当我将 ${project.version}
放在规范的版本字段中时,目标文件夹中的 yaml 文件被很好地替换了,但是当我打开 swagger-ui 时,它会打印“${project .version}"字面意思而不是实际版本。
这是来 self 的 pom 的插件配置:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${openapi-generator-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.build.resources[0].directory}/spec.yml</inputSpec>
<ignoreFileOverride>${project.build.resources[0].directory}/.openapi-codegen-ignore</ignoreFileOverride>
<language>spring</language>
<library>spring-boot</library>
<configOptions>
<!-- Use the newer java.time package instead of outdated java.util-->
<dateLibrary>java8</dateLibrary>
</configOptions>
<apiPackage>${default.package}.api</apiPackage>
<modelPackage>${default.package}.model</modelPackage>
<invokerPackage>${default.package}.invoker</invokerPackage>
<generateApiTests>false</generateApiTests>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
这是我的 spec.yml:
openapi: 3.0.0
info:
version: ${project.version}
...
最佳答案
感谢@bcoughlan 的评论,我能够让 maven-resources-plugin 按需要工作。
现在它从 src/main/resources 文件夹中过滤 *yml 文件,并在 generates-sources
阶段替换 ${project.version} 占位符。因为openapi-generator-maven-plugin是同阶段执行的,定义在后面,所以会在资源过滤后执行,会在目标文件夹中的api spec上运行,结果是${project.build .outputDirectory}/spec.yml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Codegen plugin for api. Depends on maven-resources-plugin to have executed in the generate-sources phase! -->
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${openapi-generator-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.build.outputDirectory}/spec.yml</inputSpec>
<ignoreFileOverride>${project.basedir}/.openapi-codegen-ignore</ignoreFileOverride>
<language>spring</language>
<library>spring-boot</library>
<configOptions>
<!-- Use the newer java.time package instead of outdated java.util-->
<dateLibrary>java8</dateLibrary>
</configOptions>
<apiPackage>${default.package}.api</apiPackage>
<modelPackage>${default.package}.model</modelPackage>
<invokerPackage>${default.package}.invoker</invokerPackage>
<generateApiTests>false</generateApiTests>
</configuration>
</execution>
</executions>
</plugin>
注意:openapi-generator-maven-plugin 与 swagger-codegen-maven-plugin 几乎相同。更多关于差异的信息可以在这里找到:https://openapi-generator.tech/docs/fork-qna
注2:当使用spring-boot 父pom 时,您继承了resource.delimeter=@ 属性并且${project.version}
符号不再有效。所以用 @project.version@
替换占位符应该可以解决这个问题。
关于maven - 在 OpenAPI 规范定义中使用 Artifact 版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57821746/
我正在Mac上开发一个safari插件。现在我想知道safari3,safari4的所有版本号,因为我可以在一些插件示例代码info.plist中看到:MinBundleVersion是5530,我检
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在阅读 http://www.tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html我有一些问题。 版本号、次要版本号和发布号之间有什
是否必须所有用 C++ 创建的 dll 都有版本号?我的机器中有 dll,但是当我右键单击时,我无法看到版本号。 PS:我安装了Win 7。 最佳答案 重要的是要了解,在加载 DLL 期间不会使用版本
我知道 VS 2010 有 F# 2.0 和 VS 2012 - F# 3.0。 但是我如何获得 F# 版本号,例如在 F# 交互中?是否有一些命令,例如:#ver;; ? 谢谢。 最佳答案 当您在
我已经发布了如何在 Eclipse Gallileo 中找到它,但如果有人有有关旧版本的信息,请随时在下面发布。 最佳答案 (2012 年 9 月更新): MRT指出in the comments “
Rational Function Tester 脚本如何确定它在哪个版本的 RFT 下执行/构建? 我仔细研究了文档,发现最接近的是 com.rational.test.ft.script.Scri
我正在使用 Alfresco。我知道如何查看已安装的 Alfresco vesrion 编号,但我需要以编程方式获取此版本号,例如通过 rest API 或某些 http 请求。有可能吗? 最佳答案
我目前正在尝试更新版本号。在 TeamCity 中使用 Nant 构建文件,包含版本号。如果我只是使用 . . 在脚本中,buildNumber 已更新为 2.16.3,但我还希望有此版本号的计数
我想编写一个脚本,它可以递归地扫描目录中的 DLL 并生成所有版本号的报告。 如何使用脚本检测 DLL 的版本号? VBScript 解决方案是首选,除非有更好的方法。 最佳答案 您可以使用 File
我正在开始一个有人在两年前开始的项目,但我无法确定它运行的 django 版本。制作该项目的人不知道,而且我不确定猜测和检查是否有效,因为我实际上不知道该项目是否可以编译。我找到了this答案,但它表
我需要确保可用的 PostgreSQL 版本不低于要求的版本。可以按如下方式请求版本字符串: SELECT VERSION(); 它返回给我类似的东西: PostgreSQL 9.5.4, compi
在我的数据库中,我在列中填写了这些数据: 1 1.1 1.1.1 1.1.1.1 1.1.2 1.10 1.11 1.2 1.9 我想对其进行排序,得到的结果如下所示: 1 1.1 1.1.1 1.1
我正在编写一个脚本,它需要一个简单的短格式的 Bash 版本号。 我知道 bash --version,但这会产生很长的输出: GNU bash, version 4.2.10(1)-release
我将 Grunt 与 php 一起使用,并使用一个包来对我的 css 进行版本控制,并将日期戳记为 style.min.20160913230349.css。 但是我如何找到一个包,将新字符串更新到我
我有一个用 distutils 构建的 python 包,我在我的设置函数中使用版本参数,就像这样(除了名称和版本之外还有其他参数): setup(name='example_module', ver
Windows EXE 文件附有版本号,由以点分隔的四位数字组成(例如 1.0.0.0)。 问题:比较这些数字的正确方法是什么?具体来说,是 1.15.0.0 > 1.2.0.0(因为 15 > 2)
如果我有一个像 这样的 iOS 用户代理 Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532
我正在写一个 Symfony Console PHP应用程序takes a version number in the constructor . $app = new Application('my
我可以使用它们的一些构建语法或 Gradle API 中的某些内容来检查 Gradle 版本号吗? 最佳答案 gradle.gradleVersion 将返回版本号,作为字符串。 关于java - 如
我是一名优秀的程序员,十分优秀!