我试图从OpenAPI v3 YAML文件生成Spring REST接口。构建说:
Successfully generated code to property(class java.lang.String, property(class java.lang.String, fixed(class java.lang.String, /home/zolv/workspaces/main/generation-test/src/main/java)))
Deprecated Gradle features were used in this build, making it
incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.5/userguide/command_line_interface.html#sec:command_line_warnings
但是在输出目录中没有生成代码。
我遵循OpenAPI生成器gradle插件doc doc。
我的build.gradle:
plugins {
id 'java-library'
id "org.openapi.generator" version "4.1.1"
}
repositories {
jcenter()
}
dependencies {
implementation "org.openapitools:openapi-generator-gradle-plugin:3.3.4"
}
openApiGenerate {
generatorName = "spring"
inputSpec = "$rootDir/docs/openapi/api.yml".toString()
outputDir = "$rootDir/src/main/java".toString()
apiPackage = "org.openapi.example.api"
invokerPackage = "org.openapi.example.invoker"
modelPackage = "org.openapi.example.model"
modelFilesConstrainedTo = [
"Error"
]
configOptions = [
dateLibrary: "java8"
]
}
我的api。yml:
openapi: 3.0.2
info:
title: API Documentation
version: 1.0.0
servers:
- url: http://localhost:8080/
tags:
- name: Users
paths:
/users:
post:
tags:
- Users
summary: Create user
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
responses:
201:
description: New user created
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponse'
components:
schemas:
CreateUserRequest:
title: CreateUserResponse
required:
- username
- password
type: object
properties:
username:
type: string
description: Users's username
example: example@test.com
password:
type: string
description: User's password
example: $tR0nG_pA55vv0Rd
UserResponse:
title: UserResponse
required:
- id
- username
type: object
properties:
id:
type: string
description: Users's identifier
example: "1"
username:
type: string
description: Users's username
example: example@test.com
应用程序编程接口。生成器正确收集yml(如果文件中存在任何语法错误,则生成失败)。
生成日志显示:成功地将代码生成到属性(…
),这看起来很可疑。这不意味着属性包含生成的结果吗?
渐变版本:
------------------------------------------------------------
Gradle 5.5
------------------------------------------------------------
Build time: 2019-06-28 17:36:05 UTC
Revision: 83820928f3ada1a3a1dbd9a6c0d47eb3f199378f
Kotlin: 1.3.31
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM: 11.0.4 (Ubuntu 11.0.4+11-post-Ubuntu-1ubuntu218.04.3)
OS: Linux 4.15.0-1050-oem amd64
编辑:
我已经检查了gradle插件中的示例,上面的代码适用于gradle v4,但不适用于5。我还在调查。
尝试在源文件夹内生成,如下所示
openApiGenerate {
generatorName = "spring"
inputSpec = "$rootDir/src/main/resources/petstore-simple.json".toString()
outputDir = "$rootDir".toString()
apiPackage = "com.example.api"
invokerPackage = "com.example.api"
modelPackage = "com.example.model"
configOptions = [
dateLibrary: "java8"
]
globalProperties = [
modelDocs: "false"
]
}
问题似乎出现在ModelFilesConstrainedTo
中-它将类限制为Error
。注释它,它将工作(类将被生成)。
但是,还有一个问题:outputDir
。通过您的设置,它将生成如下内容:
那是错误的。此外,由于它是生成的源,因此不应转到src/main
。更好的替代方法是在build
目录中生成它,然后将其添加到编译类路径中。看看我为您创建的演示项目,这里是构建。格拉德尔。kts
(它几乎像Groovy):
plugins {
id("java-library")
id("org.openapi.generator").version("4.0.1")
id("org.springframework.boot").version("2.1.8.RELEASE")
}
repositories {
jcenter()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web:2.1.8.RELEASE")
api("io.springfox:springfox-swagger2:2.8.0")
api("io.springfox:springfox-swagger-ui:2.8.0")
api("org.openapitools:jackson-databind-nullable:0.1.0")
}
val spec = "$rootDir/docs/openapi/api.yml"
val generatedSourcesDir = "$buildDir/generated/openapi"
openApiGenerate {
generatorName.set("spring")
inputSpec.set(spec)
outputDir.set(generatedSourcesDir)
apiPackage.set("org.openapi.example.api")
invokerPackage.set("org.openapi.example.invoker")
modelPackage.set("org.openapi.example.model")
configOptions.set(mapOf(
"dateLibrary" to "java8"
))
}
sourceSets {
getByName("main") {
java {
srcDir("$generatedSourcesDir/src/main/java")
}
}
}
tasks {
val openApiGenerate by getting
val compileJava by getting {
dependsOn(openApiGenerate)
}
}
注意,您还需要在生成的源(注释和Spring类)中使用一组依赖项。
我的API定义如下: 我们使用生成代码。 生成的API参数:
虽然使用GraphiQL效果很好,但我的老板要求我实现一个用户界面,用户可以通过诸如checkbox、map relationships之类的UI元素检查呈现给他们的元素,并获取数据,这样做将为用户生成GraphiQL输入,调用API并将结果返回给用户。 所以,基本上这涉及到两代人。从GraphQL模式生成用户界面,并从用户的选择生成GraphQL输入查询。 我搜索了一下,但没有找到任何工具已经做
问题内容: 是否有可能从byte []生成java.security.cert.X509Certificate? 问题答案: 当然。 证书对象可以由CertificateFactory的一个实例创建- 尤其是配置为创建X509证书的一个实例。可以这样创建: 然后,您需要向其传递一个包含证书字节的InputStream。这可以通过将字节数组包装在ByteArrayInputStream中来实现:
问题内容: 我正在尝试在给定私钥和已知曲线的情况下生成公钥。下面是我的代码: 但是,当我打电话给 我时:我得到了例外:(不是我的拼写错误) 我似乎在计算错误,但是我不确定错误在哪里。 谢谢您的帮助! 问题答案: 如果我未来的自己需要解决方案:
嗨,我试图从动画视图生成gif 简而言之,我在FrameLayout中有了ImageView和动画视图,现在我想生成主FrameLayout的gif,最低sdk级别19。getDrawingCache位图并将它们按顺序排列成gif可能会导致内存越界问题。 当我点击“开始录制”时,我想要特定视图的gif或视频。
问题内容: 我有的: 我正在从pojo生成JSON模式。我的生成架构的代码如下所示: 我通过上面的代码生成了几个模式。其中一个pojos具有内部嵌入式枚举,以限制可能的值,如下所示: 上面的代码应将传递给“星期一”,“星期二”,“星期三”等的JSON数据中可能的String值限制。 当我在有问题的代码上运行模式生成器时,我希望得到类似以下模式的内容: 但是相反,我得到这个: 我在Jackson模式
问题内容: 我想要一个从JSON生成Java源文件的实用程序。例如我们有 我们将此传递给实用程序,并希望它生成如下内容: 编写起来并不难,但是我敢肯定有人已经做到了。 问题答案: 尝试: http://www.jsonschema2pojo.org Orsol,我确定你在这里还没有等待解决方案,但是为了下一个找到此线程的人,我想我会添加一些更多信息。 自从09年12月问这个问题以来发生了两件事: