Gradle tools installation cannot be exported
See original GitHub issue"FAILED TO EXPORT hudson.plugins.gradle.GradleInstallation$DescriptorImpl\
\ : \nio.jenkins.plugins.casc.ConfiguratorException: Can't read attribute 'installations'\
\ from hudson.plugins.gradle.GradleInstallation$DescriptorImpl@36972d3a\n\tat\
\ io.jenkins.plugins.casc.Attribute._getValue(Attribute.java:252)\n\tat io.jenkins.plugins.casc.Attribute.getValue(Attribute.java:166)\n\
\tat io.jenkins.plugins.casc.Attribute.equals(Attribute.java:199)\n\tat io.jenkins.plugins.casc.BaseConfigurator.compare(BaseConfigurator.java:336)\n\
\tat io.jenkins.plugins.casc.impl.configurators.DescriptorConfigurator.describe(DescriptorConfigurator.java:65)\n\
\tat io.jenkins.plugins.casc.impl.configurators.GlobalConfigurationCategoryConfigurator.describe(GlobalConfigurationCategoryConfigurator.java:94)\n\
\tat io.jenkins.plugins.casc.impl.configurators.GlobalConfigurationCategoryConfigurator.lambda$describe$6(GlobalConfigurationCategoryConfigurator.java:87)\n\
\tat java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)\n\
\tat java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)\n\
\tat java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)\n\
\tat java.util.Iterator.forEachRemaining(Iterator.java:116)\n\tat java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)\n\
\tat java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)\n\t\
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)\n\
\tat java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)\n\
\tat java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)\n\
\tat java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)\n\t\
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)\n\t\
at io.jenkins.plugins.casc.impl.configurators.GlobalConfigurationCategoryConfigurator.describe(GlobalConfigurationCategoryConfigurator.java:87)\n\
\tat io.jenkins.plugins.casc.impl.configurators.GlobalConfigurationCategoryConfigurator.describe(GlobalConfigurationCategoryConfigurator.java:30)\n\
\tat io.jenkins.plugins.casc.ConfigurationAsCode.export(ConfigurationAsCode.java:300)\n\
\tat io.jenkins.plugins.casc.ConfigurationAsCode.doExport(ConfigurationAsCode.java:290)\n\
\tat java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)\n\
\tat org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:343)\n\t\
at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:77)\n\
\tat org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)\n\
\tat org.kohsuke.stapler.Function.bindAndInvoke(Function.java:184)\n\tat org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:117)\n\
\tat org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:129)\n\tat org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)\n\
\tat org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)\n\tat org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)\n\
\tat org.kohsuke.stapler.MetaClass$10.dispatch(MetaClass.java:374)\n\tat org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715)\n\
\tat org.kohsuke.stapler.Stapler.invoke(Stapler.java:845)\n\tat org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)\n\
\tat org.kohsuke.stapler.Stapler.service(Stapler.java:238)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\
\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:860)\n\t\
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)\n\
\tat hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)\n\
\tat org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:225)\n\
\tat hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)\n\
\tat io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)\n\
\tat hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)\n\
\tat io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:61)\n\
\tat hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)\n\
\tat hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)\n\t\
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)\n\
\tat hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:99)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)\n\
\tat hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\n\
\tat jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\n\
\tat org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\n\
\tat org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\n\
\tat org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\n\
\tat jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\n\
\tat org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)\n\
\tat hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)\n\
\tat hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)\n\
\tat hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)\n\
\tat hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)\n\
\tat org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)\n\
\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)\n\
\tat hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)\n\
\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)\n\
\tat org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)\n\
\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)\n\
\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\
\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)\n\
\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)\n\
\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)\n\
\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)\n\
\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)\n\
\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)\n\
\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)\n\
\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\
\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\
\tat org.eclipse.jetty.server.Server.handle(Server.java:530)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:347)\n\
\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:256)\n\
\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)\n\
\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)\n\
\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247)\n\
\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140)\n\
\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\n\
\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:382)\n\
\tat winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)\n\t\
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\
\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\
\tat java.lang.Thread.run(Thread.java:748)\nCaused by: java.lang.reflect.InvocationTargetException\n\
\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\
\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\
\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat io.jenkins.plugins.casc.Attribute._getValue(Attribute.java:234)\n\
\t... 104 more\nCaused by: java.lang.NullPointerException\n\tat hudson.plugins.gradle.GradleInstallation$DescriptorImpl.getInstallations(GradleInstallation.java:121)\n\
\tat hudson.plugins.gradle.GradleInstallation$DescriptorImpl.getInstallations(GradleInstallation.java:98)\n\
\t... 109 more\n"
It appears that installations returns null for this code:
@Extension @Symbol("gradle")
public static class DescriptorImpl extends ToolDescriptor<GradleInstallation> {
public DescriptorImpl() {
}
@Inject
private Gradle.DescriptorImpl gradleDescriptor;
@Override
public String getDisplayName() {
return Messages.installer_displayName();
}
@Override
public List<? extends ToolInstaller> getDefaultInstallers() {
return Collections.singletonList(new GradleInstaller(null));
}
// for compatibility reasons, the persistence is done by GradleBuilder.DescriptorImpl
@Override
public GradleInstallation[] getInstallations() {
return gradleDescriptor.getInstallations();
}
@Override
public void setInstallations(GradleInstallation... installations) {
gradleDescriptor.setInstallations(installations);
}
}
When we export, gradleDescriptor
is null
Issue Analytics
- State:
- Created 5 years ago
- Reactions:1
- Comments:13 (10 by maintainers)
Top Results From Across the Web
Gradle Eclipse Plugin not including exported="true" in ...
The classpathentry nodes generated in the .classpath file no longer contain the exported="true" attribute which is necessary to create a working ...
Read more >Installing Gradle - Gradle User Manual
Open a second File Explorer window and go to the directory where the Gradle distribution was downloaded. Double-click the ZIP archive to expose...
Read more >Known issues with Android Studio and Android Gradle Plugin
Studio tries to import previous .vmoptions and sanitize them to work with the garbage collector used by JDK 11. If that process fails,...
Read more >Exporting a project to Gradle and building/deploying on ...
Symptoms: I want to export my project via Gradle and use Android Studio ... installation folder>/PlaybackEngines/AndroidPlayer/Tools/gradle.
Read more >Gradle - Installation - Tutorialspoint
Gradle - Installation, Gradle is a build tool based on java. There are some prerequisites that are required to be installed before installing...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
sounds like we will need a custom configurator for
GradleInstallation$DescriptorImpl
and comparable ones, that’s a bad news.@ndeloof, this issue can be closed. It was fixed by jenkinsci/gradle-plugin#63.