Allow configuration of ExecTask jvm arguments
JamesGuthrie opened this issue · 3 comments
Describe the feature
I would like to be able to provide a jvmArgs
parameter during the configuration which is passed into the underlying ExecTask
.
An example of how this could look:
swaggerSources {
myApi {
inputFile = file("myApi.yaml")
code {
language = 'java'
}
jvmArgs = '--add-opens java.base/java.util=ALL-UNNAMED'
}
}
Why do you want the feature?
The swagger generator currently does not run on jdk 16 because one of its dependencies performs illegal reflection. There is an issue open against that dependency jknack/handlebars.java#667. I suspect that it could take a while before anything moves there. In the meantime, it would be nice to be able to configure the jvm args to provide an add-opens
argument.
Hey @JamesGuthrie, I'm having the same problem. Did you happen to find any workaround?
@JamesGuthrie I replaced swagger-codegen-cli
with the current openapi-generator-cli
in my build. I was lucky and didn't even have to change the configuration of the swaggerSources
task. Looks like I finally have a working build with jdk 17.
Maybe this could also be an option for you...
I reproduced this error in 63fb0b8 as follows:
Exception in thread "Thread-0" java.lang.RuntimeException: Could not generate supporting file 'SupportingFile:
templateFile: index.mustache
folder:
destinationFilename: index.html
'
at io.swagger.codegen.v3.DefaultGenerator.generateSupportingFiles(DefaultGenerator.java:663)
at io.swagger.codegen.v3.DefaultGenerator.generate(DefaultGenerator.java:786)
at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:388)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.github.jknack.handlebars.HandlebarsException: /handlebars/htmlDocs2/sample_java.mustache:1:10: java.lang.reflect.InaccessibleObjectException: Unable to make public boolean java.util.Collections$EmptyMap.isEmpty() accessible: module java.base does not "opens java.util" to unnamed module @5274766b
/handlebars/htmlDocs2/sample_java.mustache:1:10
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
at com.github.jknack.handlebars.context.MemberValueResolver.cache(MemberValueResolver.java:82)
at com.github.jknack.handlebars.context.MemberValueResolver.resolve(MemberValueResolver.java:54)
at com.github.jknack.handlebars.Context$CompositeValueResolver.resolve(Context.java:199)
at com.github.jknack.handlebars.internal.path.PropertyPath.eval(PropertyPath.java:52)
at com.github.jknack.handlebars.Context$PathExpressionChain.next(Context.java:361)
at com.github.jknack.handlebars.Context$PathExpressionChain.eval(Context.java:381)
at com.github.jknack.handlebars.Context.get(Context.java:621)
at com.github.jknack.handlebars.Context$PartialCtx.get(Context.java:165)
at com.github.jknack.handlebars.internal.Variable.value(Variable.java:183)
at com.github.jknack.handlebars.internal.Variable.merge(Variable.java:160)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.ForwardingTemplate.apply(ForwardingTemplate.java:86)
at com.github.jknack.handlebars.internal.Partial.merge(Partial.java:228)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:445)
at com.github.jknack.handlebars.helper.WithHelper.apply(WithHelper.java:58)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.helper.EachHelper.apply(EachHelper.java:73)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.helper.EachHelper.apply(EachHelper.java:73)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:445)
at com.github.jknack.handlebars.helper.WithHelper.apply(WithHelper.java:58)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.helper.EachHelper.apply(EachHelper.java:73)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
at com.github.jknack.handlebars.Options.apply(Options.java:538)
at com.github.jknack.handlebars.Options.fn(Options.java:445)
at com.github.jknack.handlebars.helper.WithHelper.apply(WithHelper.java:58)
at com.github.jknack.handlebars.internal.Block.merge(Block.java:211)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.TemplateList.merge(TemplateList.java:95)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:130)
at com.github.jknack.handlebars.internal.BaseTemplate.apply(BaseTemplate.java:118)
at com.github.jknack.handlebars.internal.ForwardingTemplate.apply(ForwardingTemplate.java:72)
at io.swagger.codegen.v3.templates.HandlebarTemplateEngine.getRendered(HandlebarTemplateEngine.java:25)
at io.swagger.codegen.v3.DefaultGenerator.generateSupportingFiles(DefaultGenerator.java:634)
... 3 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make public boolean java.util.Collections$EmptyMap.isEmpty() accessible: module java.base does not "opens java.util" to unnamed module @5274766b
... 74 more
Fixed by #248. Thank you for your contribution.