light-4j:light-codegen 无法生成项目
light-4j: light-codegen fails to generate project
我已经尝试使用提供的示例宠物店 openapi.json 生成项目。我使用 light-codegen 生成端点和模型。
我确实安装了 light-codegen:
git clone https://github.com/networknt/light-codegen.git
cd light-codegen
mvn clean install
然后我从我的项目文件夹中 运行 codegen:
java -jar ../../networknt/light-codegen/codegen-cli/target/codegen-cli.jar -f openapi -o /tmp/petstore -m openapi.json -c config.json
我在输出中看到以下错误:
openapi openapi.json config.json /tmp/petstore
19:16:00.766 [main] INFO com.networknt.config.Config - daily config cache refresh
19:16:00.772 [main] INFO com.networknt.config.Config - Unable to load config from externalized folder for service.yml in
19:16:00.772 [main] INFO com.networknt.config.Config - Trying to load config from classpath directory for file service.yml
19:16:00.774 [main] INFO com.networknt.config.Config - Config loaded from default folder for service.yml
19:16:04.799 [main] INFO com.fizzed.rocker.runtime.RockerRuntime - Rocker version 0.22.0
19:16:04.801 [main] INFO com.fizzed.rocker.runtime.RockerRuntime - Rocker template reloading not activated
java.nio.file.NoSuchFileException: /tmp/petstore/src/test/resources/config/client.keystore
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
at java.nio.file.Files.newOutputStream(Files.java:216)
at java.nio.file.Files.copy(Files.java:3016)
at com.networknt.codegen.rest.OpenApiGenerator.generate(OpenApiGenerator.java:367)
at com.networknt.codegen.Cli.run(Cli.java:98)
at com.networknt.codegen.Cli.main(Cli.java:50)
我需要以某种方式提供 client.keystore 吗?
config.json
{
"name": "petstore",
"version": "3.0.1",
"groupId": "com.networknt",
"artifactId": "petstore",
"rootPackage": "com.networknt.petstore",
"handlerPackage":"com.networknt.petstore.handler",
"modelPackage":"com.networknt.petstore.model",
"overwriteHandler": true,
"overwriteHandlerTest": true,
"overwriteModel": true,
"httpPort": 8080,
"enableHttp": false,
"httpsPort": 8443,
"enableHttps": true,
"enableHttp2": true,
"enableRegistry": false,
"supportDb": false,
"supportH2ForTest": false,
"supportClient": false,
"specChangeCodeReGenOnly": true,
"dockerOrganization": "networknt"
}
openapi.json: https://github.com/networknt/light-example-4j/blob/master/rest/perstore-with-codegen/petstore-spec/config/openapi.json
在配置中,supportClient设置为false。在这种情况下,不需要生成 client.keystore。我猜这是目录问题。
如果你想在 openapi 中生成 petstore 项目,那么最好的方法是 运行 从你的工作区中将 light-codegen 和 model-config 作为子文件夹的生成器。
java -jar light-codegen/codegen-cli/target/codegen-cli.jar -f openapi -o /tmp/petstore -m model-config/rest/openapi/petstore/1.0.0/openapi.json -c model-config/rest/openapi/petstore/1.0.0/config.json
light-example-4j/rest/petstore-with-maven/petstore-spec/config 中的配置不是用于从命令行生成代码,而是来自 maven 插件。
如果您想从该文件夹生成代码,这里是命令行。
java -jar light-codegen/codegen-cli/target/codegen-cli.jar -f openapi -o /tmp/petstore -m light-example-4j/rest/perstore-with-codegen/petstore-spec/config/openapi.yaml -c light-example-4j/rest/perstore-with-codegen/petstore-spec/config/config.json
我已经尝试了这两个命令,它们在我的桌面上都运行良好。让我详细了解您的步骤,以便我可以重现该问题。谢谢。
我已经尝试使用提供的示例宠物店 openapi.json 生成项目。我使用 light-codegen 生成端点和模型。
我确实安装了 light-codegen:
git clone https://github.com/networknt/light-codegen.git
cd light-codegen
mvn clean install
然后我从我的项目文件夹中 运行 codegen:
java -jar ../../networknt/light-codegen/codegen-cli/target/codegen-cli.jar -f openapi -o /tmp/petstore -m openapi.json -c config.json
我在输出中看到以下错误:
openapi openapi.json config.json /tmp/petstore
19:16:00.766 [main] INFO com.networknt.config.Config - daily config cache refresh
19:16:00.772 [main] INFO com.networknt.config.Config - Unable to load config from externalized folder for service.yml in
19:16:00.772 [main] INFO com.networknt.config.Config - Trying to load config from classpath directory for file service.yml
19:16:00.774 [main] INFO com.networknt.config.Config - Config loaded from default folder for service.yml
19:16:04.799 [main] INFO com.fizzed.rocker.runtime.RockerRuntime - Rocker version 0.22.0
19:16:04.801 [main] INFO com.fizzed.rocker.runtime.RockerRuntime - Rocker template reloading not activated
java.nio.file.NoSuchFileException: /tmp/petstore/src/test/resources/config/client.keystore
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
at java.nio.file.Files.newOutputStream(Files.java:216)
at java.nio.file.Files.copy(Files.java:3016)
at com.networknt.codegen.rest.OpenApiGenerator.generate(OpenApiGenerator.java:367)
at com.networknt.codegen.Cli.run(Cli.java:98)
at com.networknt.codegen.Cli.main(Cli.java:50)
我需要以某种方式提供 client.keystore 吗?
config.json
{
"name": "petstore",
"version": "3.0.1",
"groupId": "com.networknt",
"artifactId": "petstore",
"rootPackage": "com.networknt.petstore",
"handlerPackage":"com.networknt.petstore.handler",
"modelPackage":"com.networknt.petstore.model",
"overwriteHandler": true,
"overwriteHandlerTest": true,
"overwriteModel": true,
"httpPort": 8080,
"enableHttp": false,
"httpsPort": 8443,
"enableHttps": true,
"enableHttp2": true,
"enableRegistry": false,
"supportDb": false,
"supportH2ForTest": false,
"supportClient": false,
"specChangeCodeReGenOnly": true,
"dockerOrganization": "networknt"
}
openapi.json: https://github.com/networknt/light-example-4j/blob/master/rest/perstore-with-codegen/petstore-spec/config/openapi.json
在配置中,supportClient设置为false。在这种情况下,不需要生成 client.keystore。我猜这是目录问题。
如果你想在 openapi 中生成 petstore 项目,那么最好的方法是 运行 从你的工作区中将 light-codegen 和 model-config 作为子文件夹的生成器。
java -jar light-codegen/codegen-cli/target/codegen-cli.jar -f openapi -o /tmp/petstore -m model-config/rest/openapi/petstore/1.0.0/openapi.json -c model-config/rest/openapi/petstore/1.0.0/config.json
light-example-4j/rest/petstore-with-maven/petstore-spec/config 中的配置不是用于从命令行生成代码,而是来自 maven 插件。
如果您想从该文件夹生成代码,这里是命令行。
java -jar light-codegen/codegen-cli/target/codegen-cli.jar -f openapi -o /tmp/petstore -m light-example-4j/rest/perstore-with-codegen/petstore-spec/config/openapi.yaml -c light-example-4j/rest/perstore-with-codegen/petstore-spec/config/config.json
我已经尝试了这两个命令,它们在我的桌面上都运行良好。让我详细了解您的步骤,以便我可以重现该问题。谢谢。