int128 / gradle-swagger-generator-plugin Goto Github PK
View Code? Open in Web Editor NEWGradle plugin for OpenAPI YAML validation, code generation and API document publishing
License: Apache License 2.0
Gradle plugin for OpenAPI YAML validation, code generation and API document publishing
License: Apache License 2.0
i just tried this:
dependencies {
swaggerUI 'org.webjars:swagger-ui:3.0.6'
}
the generated index.html points to the example swagger petstore instead of my yaml file.
using 2.2.10 works as intended.
I'm using version 2.11.0 and am trying to generate static HTML. I see the documentation in your README for how to build the ReDoc or the Swagger UI, but there is nothing about static HTML. I see in the main Swagger Codegen docs that it is possible by passing -l html
as command line args, but I don't see a way to do it with this plugin.
The validateSwagger Gradle task fails due to exception:
org.yaml.snakeyaml.events.MappingStartEvent.<init>(Ljava/lang/String;Ljava/lang/String;ZLorg/yaml/snakeyaml/error/Mark;Lorg/yaml/snakeyaml/error/Mark;Ljava/lang/Boolean;)V
To Reproduce:
Create new directory
Run gradle init
Download https://github.com/int128/gradle-swagger-generator-plugin/blob/master/acceptance-test/examples/openapi-v2-petstore.yaml into directory
Update build.gradle
plugins {
id 'org.hidetake.swagger.generator' version '2.18.1'
}
validateSwagger {
inputFile = file('openapi-v2-petstore.yaml')
}
Expected behavior:
Validates swagger spec
Plugin version: 2.18.1
Gradle version: 5.4.1
Java version:
openjdk version "1.8.0_172"
OpenJDK Runtime Environment (Zulu 8.30.0.1-win64) (build 1.8.0_172-b01)
OpenJDK 64-Bit Server VM (Zulu 8.30.0.1-win64) (build 25.172-b01, mixed mode)
OS: Windows 10
According to the docs (for the swagger-codegen-cli tool), the -l
flag can take a classname on the classpath. So, in my generateSwaggerCode task I have specified something like:
generateSwaggerCode {
language = 'CustomClientCodeGen'
inputFile = file("${projectDir}/swagger/example.yml")
configFile = file("${projectDir}/swagger/example.json")
}
I notice you are passing that directly to the -l
option. However, this does not work:
Can't load config class with name CustomClientCodeGen
Any thoughts? I will need to take a closer look at your code later today.
I use your plugin for generating sourcecode from swagger.yml - no problems.
I read the documentation but I do not understand, whether it is possible to generate the swagger.yml file from the sourcecode. So my question is it possible with this plugin?
> Executing task: gradle generateSwaggerCode --stacktrace <
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'xx-client'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not resolve gradle.plugin.org.hidetake:gradle-swagger-generator-plugin:2.12.0.
Required by:
project :
> Could not resolve gradle.plugin.org.hidetake:gradle-swagger-generator-plugin:2.12.0.
> Could not get resource 'https://plugins.gradle.org/m2/gradle/plugin/org/hidetake/gradle-swagger-generator-plugin/2.12.0/gradle-swagger-generator-plugin-2.12.0.pom'.
> Could not GET 'https://plugins.gradle.org/m2/gradle/plugin/org/hidetake/gradle-swagger-generator-plugin/2.12.0/gradle-swagger-generator-plugin-2.12.0.pom'.
> This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server (plugins.gradle.org)
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring root project 'xx-client'.
at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:79)
at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:73)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$400(LifecycleProjectEvaluator.java:54)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:107)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:68)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:687)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:140)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:41)
at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:274)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:182)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:141)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:154)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:50)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:47)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:44)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:79)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all artifacts for configuration ':classpath'.
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:1054)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1700(DefaultConfiguration.java:123)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationArtifactCollection.ensureResolved(DefaultConfiguration.java:1489)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationArtifactCollection.getArtifacts(DefaultConfiguration.java:1461)
at org.gradle.composite.internal.CompositeBuildClassPathInitializer.execute(CompositeBuildClassPathInitializer.java:45)
at org.gradle.composite.internal.CompositeBuildClassPathInitializer.execute(CompositeBuildClassPathInitializer.java:32)
at org.gradle.api.internal.initialization.DefaultScriptClassPathResolver.resolveClassPath(DefaultScriptClassPathResolver.java:37)
at org.gradle.api.internal.initialization.DefaultScriptHandler.getScriptClassPath(DefaultScriptHandler.java:74)
at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.defineScriptHandlerClassScope(DefaultPluginRequestApplicator.java:204)
at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.applyPlugins(DefaultPluginRequestApplicator.java:82)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:186)
at org.gradle.configuration.BuildOperationScriptPlugin$1$1.run(BuildOperationScriptPlugin.java:69)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:66)
at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:63)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:48)
at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:63)
at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:41)
at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:105)
... 85 more
Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve gradle.plugin.org.hidetake:gradle-swagger-generator-plugin:2.12.0.
Required by:
project :
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolveModule(RepositoryChainComponentMetaDataResolver.java:103)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolve(RepositoryChainComponentMetaDataResolver.java:63)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.ComponentResolversChain$ComponentMetaDataResolverChain.resolve(ComponentResolversChain.java:94)
at org.gradle.api.internal.artifacts.ivyservice.clientmodule.ClientModuleResolver.resolve(ClientModuleResolver.java:62)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.ComponentState.resolve(ComponentState.java:208)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.ComponentState.resolve(ComponentState.java:196)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.ComponentState.getMetadata(ComponentState.java:152)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.EdgeState.calculateTargetConfigurations(EdgeState.java:156)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.EdgeState.attachToTargetConfigurations(EdgeState.java:112)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.attachToTargetRevisionsSerially(DependencyGraphBuilder.java:315)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.resolveEdges(DependencyGraphBuilder.java:202)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.traverseGraph(DependencyGraphBuilder.java:155)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.resolve(DependencyGraphBuilder.java:126)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultArtifactDependencyResolver.resolve(DefaultArtifactDependencyResolver.java:123)
at org.gradle.api.internal.artifacts.ivyservice.DefaultConfigurationResolver.resolveGraph(DefaultConfigurationResolver.java:167)
at org.gradle.api.internal.artifacts.ivyservice.ShortCircuitEmptyConfigurationResolver.resolveGraph(ShortCircuitEmptyConfigurationResolver.java:89)
at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.resolveGraph(ErrorHandlingConfigurationResolver.java:73)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$5.run(DefaultConfiguration.java:533)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveGraphIfRequired(DefaultConfiguration.java:524)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveToStateOrLater(DefaultConfiguration.java:509)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1800(DefaultConfiguration.java:123)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getSelectedArtifacts(DefaultConfiguration.java:1037)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.access$3100(DefaultConfiguration.java:971)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationArtifactCollection.ensureResolved(DefaultConfiguration.java:1483)
... 107 more
Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve gradle.plugin.org.hidetake:gradle-swagger-generator-plugin:2.12.0.
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.resolveComponentMetaData(ErrorHandlingModuleComponentRepository.java:141)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentMetaDataResolveState.process(ComponentMetaDataResolveState.java:75)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentMetaDataResolveState.resolve(ComponentMetaDataResolveState.java:63)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.findBestMatch(RepositoryChainComponentMetaDataResolver.java:138)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.findBestMatch(RepositoryChainComponentMetaDataResolver.java:119)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolveModule(RepositoryChainComponentMetaDataResolver.java:92)
... 135 more
Caused by: org.gradle.api.resources.ResourceException: Could not get resource 'https://plugins.gradle.org/m2/gradle/plugin/org/hidetake/gradle-swagger-generator-plugin/2.12.0/gradle-swagger-generator-plugin-2.12.0.pom'.
at org.gradle.internal.resource.ResourceExceptions.failure(ResourceExceptions.java:74)
at org.gradle.internal.resource.ResourceExceptions.getFailed(ResourceExceptions.java:57)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.copyToCache(DefaultCacheAwareExternalResourceAccessor.java:201)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.access$300(DefaultCacheAwareExternalResourceAccessor.java:54)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor$1.create(DefaultCacheAwareExternalResourceAccessor.java:89)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor$1.create(DefaultCacheAwareExternalResourceAccessor.java:81)
at org.gradle.cache.internal.ProducerGuard$AdaptiveProducerGuard.guardByKey(ProducerGuard.java:97)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.getResource(DefaultCacheAwareExternalResourceAccessor.java:81)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadByCoords(DefaultExternalResourceArtifactResolver.java:133)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.downloadStaticResource(DefaultExternalResourceArtifactResolver.java:97)
at org.gradle.api.internal.artifacts.repositories.resolver.DefaultExternalResourceArtifactResolver.resolveArtifact(DefaultExternalResourceArtifactResolver.java:64)
at org.gradle.api.internal.artifacts.repositories.metadata.AbstractRepositoryMetadataSource.parseMetaDataFromArtifact(AbstractRepositoryMetadataSource.java:69)
at org.gradle.api.internal.artifacts.repositories.metadata.AbstractRepositoryMetadataSource.create(AbstractRepositoryMetadataSource.java:59)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver.resolveStaticDependency(ExternalResourceResolver.java:244)
at org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver.doResolveComponentMetaData(MavenResolver.java:127)
at org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver$RemoteRepositoryAccess.resolveComponentMetaData(ExternalResourceResolver.java:445)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$ResolveAndCacheRepositoryAccess.resolveComponentMetaData(CachingModuleComponentRepository.java:378)
at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.resolveComponentMetaData(ErrorHandlingModuleComponentRepository.java:138)
... 140 more
Caused by: org.gradle.internal.resource.transport.http.HttpRequestException: Could not GET 'https://plugins.gradle.org/m2/gradle/plugin/org/hidetake/gradle-swagger-generator-plugin/2.12.0/gradle-swagger-generator-plugin-2.12.0.pom'.
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:96)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRawGet(HttpClientHelper.java:80)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performGet(HttpClientHelper.java:84)
at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource(HttpResourceAccessor.java:43)
at org.gradle.internal.resource.transport.http.HttpResourceAccessor.openResource(HttpResourceAccessor.java:29)
at org.gradle.internal.resource.transfer.DefaultExternalResourceConnector.openResource(DefaultExternalResourceConnector.java:56)
at org.gradle.internal.resource.transfer.ProgressLoggingExternalResourceAccessor.openResource(ProgressLoggingExternalResourceAccessor.java:37)
at org.gradle.internal.resource.transfer.AccessorBackedExternalResource.withContentIfPresent(AccessorBackedExternalResource.java:130)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator$11.call(BuildOperationFiringExternalResourceDecorator.java:237)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator$11.call(BuildOperationFiringExternalResourceDecorator.java:229)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:314)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:304)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:100)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.internal.resource.BuildOperationFiringExternalResourceDecorator.withContentIfPresent(BuildOperationFiringExternalResourceDecorator.java:229)
at org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor.copyToCache(DefaultCacheAwareExternalResourceAccessor.java:199)
... 155 more
Caused by: java.net.UnknownHostException: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server (plugins.gradle.org)
at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:112)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:148)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performHttpRequest(HttpClientHelper.java:126)
at org.gradle.internal.resource.transport.http.HttpClientHelper.executeGetOrHead(HttpClientHelper.java:103)
at org.gradle.internal.resource.transport.http.HttpClientHelper.performRequest(HttpClientHelper.java:94)
... 171 more
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
Generate java or kotlin code with enum properties in body does not generate enums in code or html.
To Reproduce:
Use a swagger file with a property like:
"device_type": {
"enum": [
0,
1,
2,
65535
],
"type": "integer"
},
Expected behavior:
enum class generated (or documented for html language)
Actual behaviour:
no enum classes or enum variables.
Tested by modifying the templates and all the xxxEnum mustache variables are off or empty.
Tested via html , java, kotlin generators.
Note: the swagger-io property displays the enum values , but it is comming from the embedded .js files which includes the original swagger.
Appears to be a problem in the codegen core parser
Plugin version: 2.16.0
Swagger Codegen version: 2.4.0
Gradle version: 5.1
Java version: 1.8
OS:linux
README doesn't say anything about config.json. We should add a basic example.
I want to generate my spring server stub from a yaml into build/swagger-code-petstore
then I can write my own Controller/Implementation in src/main/java/explame.api
But I'm unable to skip the PetApiController generation. Tried this, but still generating all ApiController's files
"additionalProperties": {
"ignore-file-override": ".swagger-codegen-ignore"
}
.swagger-codegen-ignore
*ApiController.java
Am I missing something? or if there is any workaround?
swagger-codegen-cli allows to pass an url for input file specifications and can generate over that. Swagger maven codegen plugin supports the same so as open api plugin.
This will bring feature parity and is very useful in generating client directly from public definition urls.
Plugin cleanups dir it is bad behavior, as swagger has it's own .swagger-codegen-ignore
With the following config:
swaggerSources {
myProject {
inputFile = file('swagger-api.json')
code {
language = 'spring'
configFile = file('config.json')
components = ['models']
outputDir = file("$buildDir/swagger-code-myProject")
}
}
}
Generated files are not going to $buildDir/swagger-code-myProject as expected, but instead to $buildDir/swagger-code-myProject/src/main/java.
As such you cannot specify swaggerSources.livestreaming.code.outputDir as a valid input file for subsequent code handling.
Hello,
Thanks for this plugin! I am looking for a solution share objects across multiple spec. files.
One of the options, is to refer from the spec file with a $ref to an object, which is generated elsewhere.
I use the rawOptions param [2], but get an error [1]. It must be a stupid thing, any idea?
Regards Christophe
[1] Error
Execution failed for task ':player-auth:player-auth-experience-spec:generateSwaggerCodeExperience'.
Found unexpected parameters: [--import-mappings ErrorCode=nl.nederlandseloterij.gateway.shared.model.ErrorCode]
[2] Config for swaggerSource.
swaggerSources {
experience {
inputFile = file('src/main/resources/player-auth-experience-api-spec.yml')
code {
language = 'spring'
templateDir = file(templateDirPath)
configFile = file(codegenFile)
components = [models: true]
rawOptions = ['--import-mappings ErrorCode=nl.nederlandseloterij.gateway.shared.model.ErrorCode']
}
}
}
[3] snippet from yml file.
code:
$ref: "#/definitions/ErrorCode"
Im using the generateSwaggerCode command. Instead of generating the models in the build directory, I want them generated in src/gen/java/com/cb/models
So i have changed build.gradle:
swaggerSources { petstore { inputFile = file('petstore.yaml') code { language = 'java' components = ['models'] configFile = file('config.json') outputDir = file('src/gen/java/') } } }
And config.json is:
{ "dateLibrary": "java8", "hideGenerationTimestamp": true, "modelPackage": "com.cb.models" }
However, the models end up at src/gen/java/src/main/java/com/cb/Pet.java
I cannot figure out how to get rid of src/main/java
in the path. Can this be done?
Is it possible to generate swagger-spec.js
in UTF-8 encoding ? It seems to be encoded in CP1252. My source OpenAPI YAML is UTF-8 encoded and contains special unicode characters that are displayed incorrectly in Swagger UI.
With current configuration I can't specify files to be generated by swagger, like:
<supportingFiles>ApiClient.java,ApiException.java,Configuration.java,JSON.java,Pair.java,StringUtil.java,TypeRef.java,ApiKeyAuth.java,Authentication.java,HttpBasicAuth.java,OAuth.java,OAuthFlow.java</supportingFiles>
"compenents" is restricted to ['apis', 'models', 'supportingFiles']
I switched to gradle 5 and build.gradle.kts files ... How do I have to adopt the swaggerSources configuration block?
I'm using gradle-swagger-generator-plugin
for generate client code.
This is my api.yml
file .
items/{itemId}:
get:
operationId: getItems
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: 'definitions/items.yml#/schemas/ItemDTO'
and ItemDTO
like following .
ItemDTO:
title: ItemDTO
type: object
properties:
name:
type: string
description:
type: string
size:
$ref: 'base.yml#/enum/Size'
options:
type: array
items:
$ref: '#/components/OptionDTO'
ItemsApi
, ItemDTO
were made well.
But problem was occured in ItemDTO
.
ItemDTO
that generated by this plugin has this reference
class ItemDTO{
BaseYmlComponentsSize size;
List<ComponentsOptionDTO> options;
}
What is that.......
Size
, OptionDTO
wasn't referenced using their own name.
Even they weren't generated as well.
What I did it wrong?
Using the plugin requires the following boilerplate set up:
compileJava.dependsOn swaggerSources.wiremock.code
sourceSets.main.java.srcDir "${swaggerSources.wiremock.code.outputDir}/src/main/java"
sourceSets.main.resources.srcDir "${swaggerSources.wiremock.code.outputDir}/src/main/resources"
idea {
module {
sourceDirs += file("${swaggerSources.wiremock.code.outputDir}/src/main/java")
sourceDirs += file("${swaggerSources.wiremock.code.outputDir}/src/main/resources")
generatedSourceDirs += file("${swaggerSources.wiremock.code.outputDir}")
}
}
A good-natured Gradle plugin should do the above in the plugin code. See this discussion in the Gradle forum on a similar issue.
Plugin version: 2.15.1
Swagger Codegen version: 2.3.1
Gradle version: 4.10.2
thanks in advance!
Hello,
thank you for your work put into the plugin development.
I would like to ask if there is a way (enabled by this plugin explicitly or maybe by using some Groovy magic) to shorten multiple similar blocks of configuration into one.
Let's say that i have swaggerSources configured like below:
swaggerSources {
source1 {
inputFile = file('file1')
code {
language = 'spring'
additionalProperties = [
'modelPackage': 'model1'
]
}
}
source2 {
inputFile = file('file2')
code {
language = 'spring'
additionalProperties = [
'modelPackage': 'model2'
]
}
}
// x - 2 source configurations...
}
As you can see, there are multiple almost identical sources which are varying only in inputFile
and modelPackage
. Do you think there is a way to shorten it from declaring x almost identical sources into one parametrized?
I'm running GenerateSwaggerCode
task on input yaml
that contains multiple $ref
s. With such a setup, gradle doesn't pick up referenced files as input files for the task. Hence, it caches the task output and doesn't rerun the task on content changes in any of the referenced files.
What's the correct approach to both keep using gradle cache and rerun generation on ref changes?
As a workaround, I've added the directory which contains the referenced files as templateDir
. So now my codegen task definition looks like that:
devCodegen {
inputFile = file("${projectDir}/src/main/swagger/schema/api.yml")
code {
language = "java"
outputDir = file("${buildDir}/swagger/codegen/api")
additionalProperties = [...]
wipeOutputDir = false
templateDir = file("${projectDir}/src/main/swagger/schema")
}
}
Plugin version: 2.15.0
Swagger Codegen version: 2.2.3
Gradle version: 5.1.1
Java version: 8
OS: OSX
https://circleci.com/gh/int128/gradle-swagger-generator-plugin/170
Task with path 'build-redoc' not found in project ':acceptance-test'.
https://github.com/int128/gradle-swagger-generator-plugin/blob/2.16.0/README.md (links to the redoc/basic project)
I have classes annotated with @SecuritySecheme but I don't seem to be able to get a client generated that supports authentication. Am I missing something or is this not supported?
@Securityscheme(type= SecuritySchemeType.APIKEY, in = SecuritySchemeIn.COOKIE, name = "JSESSIONID")
Gives following error when two or more sources are used under swaggerSources while generating UI. It works well for single source.
Caused by:
org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method copy() for arguments [build_f1ze0druuyrt748fg165ca1g2$_run_closure2$_closure18$_closure24$_closure25$_closure26@511a0d5d] on task ':generateSwaggerUISource2' of type org.hidetake.gradle.swagger.generator.GenerateSwaggerUI.
Use following code, then generate UI
swaggerSources {
source1 {
inputFile = file(<Yaml full path>)
code {
language = 'spring'
configFile = file(<config full path>)
components = ['models', 'apis']
dependsOn validation
}
ui {
doLast {
copy {
from "index.html"
into outputDir
}
}
}
}
source2 {
inputFile = file(<Yaml2 fullpath>)
code {
language = 'spring'
configFile = file(<config2 full path>)
components = ['apis']
dependsOn validation
}
ui {
doLast {
copy {
from "index.html"
into outputDir
}
}
}
}
}
Should generate working UI for both sources.
Plugin version:
2.10.0 (tested with latest 2.18.1 also)
Swagger Codegen version: 2.3.1
Gradle version: 4.5.1
Java version: 1.8
OS: Windows 10
I am using org.hidetake.swagger.generator v. 2.15.0 and swagger-codegen-cli v. 3.0.0 (as swaggerCodegen in my gradle dependencies). (gradle v. 4.10.2, java 1.8.0 and linux 4.15) I also have:
swaggerSources {
siaServer {
inputFile = file('docs/openapi.yaml')
code { language = 'html2' }
}
}
But when I execute ./gradlew generateSwaggerCode the generated html2 output has empty schemas (apis are shown fine). Using the very same yaml file and the online swagger editor, the generated html2 shows my defined schemas. What am I missing?
Hi,
it would be nice if one could have an option which code generator version to use.
E.g. if one has a very big project and multiple Yaml definitions it would be nice to define which code gen version to use for which yaml definition.
The main reason for this is that the OpenAPI specification breaks some specs of the old Swagger 2.0.
UUID is not supported anymore, as one example.
If I try to generate these old definitions with V3 then my old already deployed APIs will break.
Thanks in advance,
Jรผrgen
Does the plugin support pOpen API 3.0?
I tried using the petstore example and the validation fails.
Hi, I would like to generate the source codes in a separate directory rather than build or target directory. Is it possible in this plugin? So far, I was not able to generate it at all in a different directory other than the target.
We've been using your swagger codegen plugin for a couple of weeks now and have been pretty happy with it.
We want to wrap your plugin in a custom plugin of our own in order to bundle multiple tasks together. For this, we need to build and publish the code as a jar file in a central repo.
For now, we've been building the project code locally and have been publishing to a local repo and have been able to make it work.
Would it be possible for you to publish the jar to a central repo like Maven Central or Bintray?
I have started to use this plugin and I was wondering what are the valid options for the components configuration parameter. Here is the configuration that I am currently using:
swaggerSources {
encounter_service {
inputFile = file('./src/swagger/encounter-service.json')
code {
language = 'java'
library = 'vertx'
configFile = file('./src/swagger/swagger-codegen-config.json')
components = ['models', 'apis']
dependsOn validation
}
}
}
and config:
{
"library": "vertx",
"dateLibrary": "java8",
"hideGenerationTimestamp": true,
"modelPackage": "com.intelerad.cloudris.encounterservice.model",
"apiPackage": "com.intelerad.cloudris.encounterservice.api",
"invokerPackage": "com.intelerad.cloudris.encounterservice"
}
This configuration generates the code as I expect, the only issue is that it does not include the classes:
ApiClient, Pair, Configuration and ApiException. It's not clear to me what additional components I should include in order to have those classes generated. If I don't include a components configuration those classes are indeed generated, but so is all the project scaffolding (build.gradle, pom.xml, etc...) which I do not require.
I'm getting this error when generating with the latest 2.4.0-SNAPSHOT
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':generateSwaggerCodeZoneapi'.
> com.fasterxml.jackson.databind.ObjectMapper.addMixIn(Ljava/lang/Class;Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/ObjectMapper;
Generation with 2.3.1 works fine, but 2.4.0 (and 3.0.0) produces the same error.
I am using version 2.11.0 of the plugin, gradle version 4.1.
Below is the config
swaggerSources {
cemProfile {
inputFile = file('src/main/resources/swagger/domain-openapi.yaml')
code {
language = 'spring'
configFile = file('src/main/resources/swagger/domain-openapi.json')
}
}
}
Client dependency
swaggerCodegen 'io.swagger:swagger-codegen-cli:2.3.1'
When ran the command
gradle --stacktrace generateSwaggerCode
:generateSwaggerCodeCemProfile FAILED
FAILURE: Build failed with an exception.
com.google.common.collect.ImmutableList.copyOf([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;
Caused by :
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableList.copyOf([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;
Checked the dependencies in the project and none of the projects refers to guava.
JDK 1.8_152
Gradle 2.1.2
When generating swagger code for a project, if the output directory is the current directory, the plugin (or something) deletes everything (including hidden directories).
plugin version: id "org.hidetake.swagger.generator" version "2.1.2"
generateSwaggerCode {
language = 'java'
inputFile = file('swagger-api/v1')
configFile = file('config.json')
outputDir = file('.')
}
im using swagger ui 2.2.10
generated code tried to do this:
// Overwrite options
$.each(
{
"url" : "",
"validatorUrl" : null,
"host" : "localhost"
},
function (key, value) { window.swaggerUi.setOption(key, value) }
);
but looks like the correct API would be by using window.swaggerUi.api
(see swagger-api/swagger-js#532).
specifically in my case the following expression worked:
window.swaggerUi.api.setHost("overriddenHostName")
Hi,
Nice plugin. Congrats!
Is is possible to make it less verbose? I see a bunch of the following logs during the gradle build:
[Daemon worker Thread 5] INFO io.swagger.codegen.AbstractGenerator - writing file ...
[Daemon worker Thread 5] WARN io.swagger.codegen.DefaultCodegen - Empty operationId found for path: ...
I tried to pass the verbose=false
property in different places (plugin config, additionalProperties
param and in the configFile
) but none of them removes the logs above.
Is it possible to disable these logs?
Thank you.
An API spec that contains inheritance, using <<
, is wrongly reported by validation as invalid. The YAML parser should resolve these before validation is attempted.
Hi,
I have a swagger OpenAPI YAML
file and I want to generate Java
using the plugin.
This is my config.json
{
"useRxJava2": true,
"java8": false,
"library": "retrofit2",
"dateLibrary": "joda",
"hideGenerationTimestamp": true,
"modelPackage": "backend.model",
"apiPackage": "backend.api",
"invokerPackage": "backend"
}
and this is my build.gradle
plugins {
id 'java'
id 'org.hidetake.swagger.generator' version '2.8.0'
}
repositories {
jcenter()
}
dependencies {
// Add dependency for Swagger Codegen CLI
swaggerCodegen 'io.swagger:swagger-codegen-cli:2.2.3'
compile 'io.swagger:swagger-annotations:1.5.10'
compile "joda-time:joda-time:$jodaTimeVersion"
}
swaggerSources {
backend {
inputFile = file('api.yaml')
code {
language = 'java'
configFile = file('config.json')
components = ['models', 'apis']
}
}
}
compileJava.dependsOn swaggerSources.keycore.code
sourceSets.main.java.srcDir swaggerSources.keycore.code.outputDir
When I try to generate the code via gradle:
./gradlew clean generateSwaggerCodeBackend
I receive the following exception during build:
:swagger-java-client:resolveSwaggerTemplate UP-TO-DATE
:swagger-java-client:generateSwaggerCodeBackend FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':backend-swagger-java-client:generateSwaggerCodeBackend'.
> org.joda.time.DateTime.now()Lorg/joda/time/DateTime;
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':keycore-swagger-java-client:generateSwaggerCodeKeycore'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:236)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:228)
at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:228)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:77)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:58)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:32)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:113)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$3.execute(DefaultGradleLauncher.java:196)
at org.gradle.initialization.DefaultGradleLauncher$3.execute(DefaultGradleLauncher.java:193)
at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:193)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102)
at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:44)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:29)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.NoSuchMethodError: org.joda.time.DateTime.now()Lorg/joda/time/DateTime;
at io.swagger.codegen.DefaultGenerator.configureGeneratorProperties(DefaultGenerator.java:136)
at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:687)
at io.swagger.codegen.cmd.Generate.run(Generate.java:285)
at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:35)
at org.hidetake.gradle.swagger.generator.SwaggerCodegenExecutor.execute(SwaggerCodegenExecutor.groovy:76)
at org.hidetake.gradle.swagger.generator.SwaggerCodegenExecutor$execute$0.call(Unknown Source)
at org.hidetake.gradle.swagger.generator.GenerateSwaggerCode.exec(GenerateSwaggerCode.groovy:53)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:141)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:632)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:615)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
... 70 more
BUILD FAILED
Basically it is pointing me to an
Caused by: java.lang.NoSuchMethodError: org.joda.time.DateTime.now()Lorg/joda/time/DateTime;
But I have no idea, how to fix this. I tried several options of adding joda-time to the dependencies section, but non of them worked:
compile "joda-time:joda-time:$jodaTimeVersion"
swaggerCodegen "joda-time:joda-time:$jodaTimeVersion"
I also asked this question on SO for your reference:
https://stackoverflow.com/questions/46907653/get-java-lang-nosuchmethoderror-org-joda-time-datetime-nowlorg-joda-time-date
Thank you for your help!
To Reproduce: I have the plugin setup like this
def swaggerSourceFile = "$projectDir/api/api.yaml"
def openAPIFolder = "$buildDir/generated"
swaggerSources {
api {
inputFile = file("$swaggerSourceFile")
code {
language = 'spring'
configFile = file("$projectDir/api/config.json")
outputDir = file("$openAPIFolder")
}
}
}
compileJava.dependsOn swaggerSources.api.code
compileJava.dependsOn generateSwaggerUI
sourceSets.main.java.srcDir "${swaggerSources.api.code.outputDir}/api"
sourceSets.main.resources.srcDir "${swaggerSources.api.code.outputDir}/api"
but I'm unable to view the documentation from the endpoint. I have tested
localhost:8080/swagger-ui-api/index.html
localhost:8080/index.html
Expected behavior:
I would like to see the documentation served to the frontend
Plugin version: 2.18.1
Swagger Codegen version: v3 / cli 3.0.5
Gradle version: 5.4
Java version: 11
OS: MacOs
Introduce new configuration option to choose collapse mode of generated swagger UI documentation.
The template of swagger UI itself allows easily to define default collapsing behavior over "docExpansion" property in SwaggerUIBundle definition.
See:
Swagger UI documentation defines "docExpansion" with three available modes "none", "list", "full". All three defines default view on page load and all make sense for different use-cases.
See https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/configuration.md#display
Currently, only fixed value with "full" value is possible to be generated using gradle-swagger-generator-plugin.
It would be really useful to have this option, because there are some use-cases especially for larger projects (with several tags defined) where default behavior of everything expanded is super-annoying for readers. It all the time leads for reader to manually collapse all UI elements and then start using the documentation.
Anyone who wants to workaround this issue can do same trick as me: generate HTML documentation using gradle plugin and then post-process the output by another script. The script does an easy work, replace "docExpansion" value with the one you need in a file index.html. The workaround is a bit fragile and hacky, but works up to this point.
Execution failed for task ':acceptance-test:validatePlugins'.
> Plugin validation failed. See https://docs.gradle.org/6.0.1/userguide/more_about_tasks.html#sec:task_input_output_annotations for more information on how to annotate task properties.
> Warning: Type 'GenerateReDoc': property 'inputFile' is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive, @Classpath or @CompileClasspath. Defaulting to PathSensitivity.ABSOLUTE.
> Warning: Type 'GenerateReDoc': property 'wipeOutputDir' @Input properties with primitive type 'boolean' cannot be @Optional.
> Warning: Type 'GenerateSwaggerCode': property 'adaptorFactory' is not annotated with an input or output annotation.
> Warning: Type 'GenerateSwaggerCode': property 'configFile' is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive, @Classpath or @CompileClasspath. Defaulting to PathSensitivity.ABSOLUTE.
> Warning: Type 'GenerateSwaggerCode': property 'inputFile' is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive, @Classpath or @CompileClasspath. Defaulting to PathSensitivity.ABSOLUTE.
> Warning: Type 'GenerateSwaggerCode': property 'templateDir' is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive, @Classpath or @CompileClasspath. Defaulting to PathSensitivity.ABSOLUTE.
> Warning: Type 'GenerateSwaggerCode': property 'wipeOutputDir' @Input properties with primitive type 'boolean' cannot be @Optional.
> Warning: Type 'GenerateSwaggerCodeHelp': property 'adaptorFactory' is not annotated with an input or output annotation.
> Warning: Type 'GenerateSwaggerUI': property 'inputFile' is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive, @Classpath or @CompileClasspath. Defaulting to PathSensitivity.ABSOLUTE.
> Warning: Type 'GenerateSwaggerUI': property 'wipeOutputDir' @Input properties with primitive type 'boolean' cannot be @Optional.
> Warning: Type 'ValidateSwagger': property 'inputFile' is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive, @Classpath or @CompileClasspath. Defaulting to PathSensitivity.ABSOLUTE.
To Reproduce:
https://circleci.com/gh/int128/gradle-swagger-generator-plugin/317
Expected behavior:
It should work on Gradle 6.
Plugin version: latest
Swagger Codegen version: latest
Gradle version: 6.0.1
Java version: 8
OS: Linux
GenerateReDoc
:
inputFile
is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive
, @Classpath
or @CompileClasspath
. Defaulting to PathSensitivity.ABSOLUTE.wipeOutputDir
@Input
properties with primitive type boolean
cannot be @Optional
.GenerateSwaggerCode
:
adaptorFactory
is not annotated with an input or output annotation.configFile
is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive
, @Classpath
or @CompileClasspath
. Defaulting to PathSensitivity.ABSOLUTE.inputFile
is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive
, @Classpath
or @CompileClasspath
. Defaulting to PathSensitivity.ABSOLUTE.templateDir
is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive
, @Classpath
or @CompileClasspath
. Defaulting to PathSensitivity.ABSOLUTE.wipeOutputDir
@Input
properties with primitive type boolean
cannot be @Optional
.GenerateSwaggerCodeHelp
:
adaptorFactory
is not annotated with an input or output annotation.GenerateSwaggerUI
:
inputFile
is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive
, @Classpath
or @CompileClasspath
. Defaulting to PathSensitivity.ABSOLUTE.wipeOutputDir
@Input
properties with primitive type boolean
cannot be @Optional
.ValidateSwagger
:
inputFile
is declared without normalization specified. Properties of cacheable work must declare their normalization via @PathSensitive
, @Classpath
or @CompileClasspath
. Defaulting to PathSensitivity.ABSOLUTE.There are no example for using redoc with custom options like specific version
I spent a lot of time to read the code to understand how this plugin works
I've externalized templates into another project, deployed to an Artifactory server. When I try to build I see the following error:
Could not determine the dependencies of task ':resolveSwaggerTemplate'.
> Expected configuration ':swaggerTemplate' to contain exactly one file, however, it contains 2 files.
Based on my testing deploying to Maven local, it appears to be an issue with the presence of a .jar and pom.xml file. When I manually deleted the pom.xml
resolveSwaggerTemplate
worked file. I think it has something to do with https://github.com/int128/gradle-swagger-generator-plugin/blob/master/src/main/groovy/org/hidetake/gradle/swagger/generator/ResolveSwaggerTemplate.groovy#L15 and it's use of singleFile
To Reproduce:
Publish a jar containing templates to Maven local, then use mavenlocal()
to include that repository. Add the jar as a dependency using swaggerTemplate
and the build will fail.
Expected behaviour:
The jar containing templates should be extracted to the build directory.
Plugin version: 2.15.1
Swagger Codegen version: 2.4.0
Gradle version: 3.5.1
Java version: 1.8.0-121
OS: 10.12.6 (Sierra)
10:53:15 AM: Executing tasks 'clean build --stacktrace'...
Applying default Java plugins
Download http://my.artifactory/artifactory/local-gradle/foo/swagger-codegen-templates/1.1.0/swagger-codegen-templates-1.1.0.jar
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':resolveSwaggerTemplate'.
> Expected configuration ':swaggerTemplate' to contain exactly one file, however, it contains 2 files.
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.GradleException: Could not determine the dependencies of task ':resolveSwaggerTemplate'.
at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.resolve(CachingTaskDependencyResolveContext.java:67)
at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:55)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.addToTaskGraph(DefaultTaskExecutionPlan.java:139)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.addTasks(DefaultTaskGraphExecuter.java:101)
at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:47)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:36)
at org.gradle.initialization.DefaultGradleLauncher$CalculateTaskGraphAction.execute(DefaultGradleLauncher.java:220)
at org.gradle.initialization.DefaultGradleLauncher$CalculateTaskGraphAction.execute(DefaultGradleLauncher.java:217)
at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:158)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:95)
at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:66)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:50)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner$1.execute(RunAsBuildOperationBuildActionRunner.java:43)
at org.gradle.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner$1.execute(RunAsBuildOperationBuildActionRunner.java:40)
at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
at org.gradle.tooling.internal.provider.runner.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:88)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:31)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
Caused by: java.lang.IllegalStateException: Expected configuration ':swaggerTemplate' to contain exactly one file, however, it contains 2 files.
at org.gradle.api.internal.file.AbstractFileCollection.getSingleFile(AbstractFileCollection.java:62)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getSingleFile(Unknown Source)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.getProperty(BeanDynamicObject.java:213)
at org.gradle.internal.metaobject.BeanDynamicObject.getProperty(BeanDynamicObject.java:156)
at org.gradle.internal.metaobject.CompositeDynamicObject.getProperty(CompositeDynamicObject.java:55)
at org.gradle.internal.metaobject.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:60)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getProperty(Unknown Source)
at org.hidetake.gradle.swagger.generator.ResolveSwaggerTemplate$_closure1.doCall(ResolveSwaggerTemplate.groovy:15)
at org.hidetake.gradle.swagger.generator.ResolveSwaggerTemplate$_closure1.doCall(ResolveSwaggerTemplate.groovy)
at org.gradle.api.internal.file.collections.BuildDependenciesOnlyFileCollectionResolveContext.add(BuildDependenciesOnlyFileCollectionResolveContext.java:66)
at org.gradle.api.internal.file.collections.BuildDependenciesOnlyFileCollectionResolveContext.add(BuildDependenciesOnlyFileCollectionResolveContext.java:79)
at org.gradle.api.internal.file.collections.BuildDependenciesOnlyFileCollectionResolveContext.add(BuildDependenciesOnlyFileCollectionResolveContext.java:79)
at org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.visitContents(DefaultConfigurableFileCollection.java:91)
at org.gradle.api.internal.file.CompositeFileCollection.visitDependencies(CompositeFileCollection.java:166)
at org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.visitDependencies(DefaultConfigurableFileCollection.java:97)
at org.gradle.api.internal.file.CompositeFileCollection$1.visitDependencies(CompositeFileCollection.java:116)
at org.gradle.api.internal.file.CompositeFileTree$FilteredFileTree.visitDependencies(CompositeFileTree.java:122)
at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:88)
at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmpyEdges.getNodeValues(CachingDirectedGraphWalker.java:202)
at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:112)
at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:64)
at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.doResolve(CachingTaskDependencyResolveContext.java:76)
at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.resolve(CachingTaskDependencyResolveContext.java:65)
... 65 more
BUILD FAILED
Total time: 1.026 secs
Expected configuration ':swaggerTemplate' to contain exactly one file, however, it contains 2 files.
10:53:16 AM: Tasks execution finished 'clean build --stacktrace'.
When I generate my documentation site with redoc, I want a custom header.title
My api users don't know what is Redoc and I don't like this unmutable title starting with 'Redoc'
Thanks a lot for this usefull plugin !
Swagger UI 3.x has been supported since 2.10.0. The destructive changes are needed because there is much difference between Swagger UI 3.x and 2.x.
See the migration guide in https://github.com/int128/gradle-swagger-generator-plugin/releases/tag/2.10.0
I am using the following index.yml file:
swagger: '2.0'
info:
version: 0.0.0
title: Simple API
paths:
/foo:
$ref: 'foo.yml'
/bar:
get:
responses:
200:
description: OK
schema:
$ref: '#/definitions/User'
definitions:
User:
type: object
properties:
name:
type: string
In build.gradle I have:
swaggerSources {
test1 {
inputFile = file('docs/api/index.yml')
ui {
options.docExpansion = 'full'
}
}
}
I placed foo.yml along with the index.yml file. Now when I run the generateSwaggerUITest1 task, only bar API shows up in the UI. On the console I see the following error:
Failed to load file:///<local path>/test1/build/swagger-ui-test1/foo.yml: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
Request.end @ index.js:164
SuperagentHttpClient.execute @ operation.js:930
SwaggerHttp.execute @ operation.js:754
(anonymous) @ index.js:100
setTimeout (async)
waitForUnlock @ index.js:89
(anonymous) @ index.js:104
Resolver.resolve @ index.js:117
(anonymous) @ operation.js:120
setTimeout (async)
SwaggerClient.build @ operation.js:119
SwaggerClient.initialize @ operation.js:41
module.exports @ model.js:13
load @ index.js:164
(anonymous) @ index.html:125
k @ jquery-1.8.0.min.js:2
fireWith @ jquery-1.8.0.min.js:2
ready @ jquery-1.8.0.min.js:2
D @ jquery-1.8.0.min.js:2
index.js:47 failed url: foo.yml
Am I missing something here or is it really a bug?
I sometimes get a metaspace error during my gradle build.
In my gradle configuration, I am using swagger code-gen to generate a lot of classes (~40). I guess that's probably where the problem comes from.
Here is an extract from the build.gradle file
dependencies {
implementation("org.springframework.boot:spring-boot-starter")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("io.swagger:swagger-annotations:1.5.10")
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-configuration-processor")
implementation("org.threeten:threetenbp:1.3.8")
implementation("com.github.joschi.jackson:jackson-datatype-threetenbp:2.6.4")
implementation("io.springfox:springfox-swagger2:2.9.2")
implementation("javax.xml.bind:jaxb-api:2.3.1")
swaggerCodegen("io.swagger.codegen.v3:swagger-codegen-cli:3.0.0")
testCompile('org.springframework.boot:spring-boot-starter-test')
}
tasks.jar {
enabled = true
}
swaggerSources {
doe1 {
inputFile = file('src/main/resources/wiremock/gfc/yaml/doe-1.yaml')
code {
language = 'spring'
components = ['models']
additionalProperties = ["modelPackage": "io.swagger.model.doe1", "invokerPackage": "io.swagger.model"]
}
}
doe2 {
inputFile = file('src/main/resources/wiremock/gfc/yaml/doe-2.yaml')
code {
language = 'spring'
components = ['models']
additionalProperties = ["modelPackage": "io.swagger.model.doe2", "invokerPackage": "io.swagger.model"]
}
}
...
doe40 {
inputFile = file('src/main/resources/wiremock/gfc/yaml/doe-40.yaml')
code {
language = 'spring'
components = ['models']
additionalProperties = ["modelPackage": "io.swagger.model.doe3", "invokerPackage": "io.swagger.model"]
}
}
}
compileJava.dependsOn swaggerSources.doe1.code, swaggerSources.doe2.code, ....., swaggerSources.doe40.code
sourceSets.main.java.srcDirs "${swaggerSources.doe1.code.outputDir}/src/main/java", "${swaggerSources.doe2.code.outputDir}/src/main/java", ..., "${swaggerSources.doe40.code.outputDir}/src/main/java"
sourceSets.main.resources.srcDirs "${swaggerSources.doe1.code.outputDir}/src/main/resources", "${swaggerSources.doe2.code.outputDir}/src/main/resources", ..., "${swaggerSources.doe40.code.outputDir}/src/main/resources"
Swagger Codegen version: 2.3.1
Gradle version: 5.1
Java version: 1.11
OS: win
We are trying to migrate from 2.11.0 to 2.15.1 and found that the custom code generator logic no longer seems to work as expected (using a 2.x based custom generator). Currently in 2.15.1 its returning:
Can't load config class with name net.test.build.HotelsSpringCodegen Available: ada
(continues to list supported codeGen config strings.
Swagger-codegen has a lot of options.
It would be nice if we could use them
swagger-codegen-cli generate
[(-a <authorization> | --auth <authorization>)]
[--additional-properties <additional properties>...]
[--api-package <api package>] [--artifact-id <artifact id>]
[--artifact-version <artifact version>]
[(-c <configuration file> | --config <configuration file>)]
[-D <system properties>...] [--git-repo-id <git repo id>]
[--git-user-id <git user id>] [--group-id <group id>]
[--http-user-agent <http user agent>]
(-i <spec file> | --input-spec <spec file>)
[--ignore-file-override <ignore file override location>]
[--import-mappings <import mappings>...]
[--instantiation-types <instantiation types>...]
[--invoker-package <invoker package>]
(-l <language> | --lang <language>)
[--language-specific-primitives <language specific primitives>...]
[--library <library>] [--model-name-prefix <model name prefix>]
[--model-name-suffix <model name suffix>]
[--model-package <model package>]
[(-o <output directory> | --output <output directory>)]
[--release-note <release note>] [--remove-operation-id-prefix]
[--reserved-words-mappings <reserved word mappings>...]
[(-s | --skip-overwrite)]
[(-t <template directory> | --template-dir <template directory>)]
[--type-mappings <type mappings>...] [(-v | --verbose)]
I suggest using an additionnal Map<String, String> otherOptions
to place them into the task. Then merge it within the buildOptions()
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.