在Windows机器上的gradle项目中,我想从openapi规范生成Java代码,但是,我不知道如何指定inputSpec
参数。为了简单起见,我描述了验证任务,因为问题也发生在那里。
plugins {
...
id "org.openapi.generator" version "6.2.1"
...
}
openApiValidate {
inputSpec = "src/main/resources/api/openapi.yaml"
}
导致Caused by: java.lang.RuntimeException: Could not find src/main/resources/api/openapi.yaml on the classpath
预料到我可能拼错了路径,我试图故意包含一个错别字
inputSpec = "src/main/resources/api/openapi.WRONG"
但是这会导致一个不同的异常
A problem was found with the configuration of task ':publisher-service:openApiValidate' (type 'ValidateTask').
> File 'C:devmyProjectsrcmainresourcesapiopenapi.WRONG' specified for property 'inputSpec' does not exist.
如果使用
inputSpec = "$projectDir/src/main/resources/api/openapi.yaml"
改成了java.net.URISyntaxException: Illegal character in opaque part at index 2: C:devmyProject/src/main/resources/api/openapi.yaml
下一次尝试使用绝对路径:
inputSpec = "/c/dev/myProject/src/main/resources/api/openapi.yaml"
同样,它在不同的地方失败了:
> File 'C:devmyProjectcdevmyProjectsrcmainresourcesapiopenapi.yaml' specified for property 'inputSpec' does not exist.
注意这里有一些路径部分是重复的。
我试着在git bash和Intellij中运行gradle(准确地说是gradlew),没有区别。
你知道怎么解决这个问题吗?
似乎与org.openapi.generator
Gradle插件的6.2.1
版本有关。我已经在gitlab提交了一个bug报告:
https://github.com/OpenAPITools/openapi-generator/issues/14075
——编辑我最后也找到了一种方法来设置路径与6.2.1
,这样:
inputSpec.set((new File("${projectDir}/src/main/resources/api/openapi.yml")).toString());