Buildship 1.0.16 is now available

Today, we have released Buildship 1.0.16. The new release brings better WTP integration and several usability improvements. This release is based on Gradle 2.14 which comes with many improvements of itself.

Correct classpath for WTP projects

Eclipse WTP requires dependencies to be annotated to determine whether they should be packed into the .war file and deployed to the server or not. This information is provided by Gradle 2.14 and above and Buildship makes use of it.

This means that Buildship can now be used for developing WTP projects as long as users check in the component and facet configuration files. Their creation will be automated in future Buildship versions.

Gradle user home is now a workspace preference

The Gradle user home directory can now be configured in the workspace preferences. It has been removed from the project import wizard and run configuration page. This makes importing projects more convenient and allows sharing the configuration files even if you have a custom Gradle user home.

Please note that we do not plan to add workspace preferences for the Java home, JVM arguments and Gradle program arguments. These can all be set in the gradle.properties file in your Gradle user home.

“Add Gradle Nature” action for existing projects

Some tools like the Git and SVN plugins for Eclipse do not allow users to run the Gradle import wizard at the moment. The best way of importing such a Gradle project was to open the import wizard and manually navigate to the checkout location.

This is no longer necessary. You can now select the “Import as general project” option and then use the new “Add Gradle Nature” action. This will synchronize the project just as if you had imported it using the Gradle import wizard.

If you would like to improve the situation further, please vote for this enhancement request for EGit.

“Refresh Gradle Project” shown in Gradle editor

The “Refresh Gradle Project” was only available when right-clicking on a project. It is now also shown when right-clicking on any .gradle file as well as in the context menu of the Gradle editor.

Gradle classpath container is restored if missing

When converting an existing Eclipse Java project to Gradle, the Gradle classpath container was missing. It is now always added when a project is a Java project.

Installation

Buildship 1.0.16 is available at the Eclipse Marketplace or at the eclipse.org update sites. Users with Buildship already installed can automatically update to the latest version.

I installed 1.0.16
It is not working for me:

  • After installation-restart of eclipse the gradle process to populate gradle task view never finished - it hangs at 0%
  • Import of a project did not work. I got the following error message:
    Loading Gradle project preview failed due to an error connecting to the Gradle build.
    Could not fetch model of type ‘GradleBuild’ using Gradle distribution ‘https://services.gradle.org/distributions/gradle-2.14-bin.zip’.

Unable to find a usable idle daemon. I have connected to 100 different daemons but I could not use any of them to run the build. BuildActionParameters were DefaultBuildActionParameters{, currentDir=C:\AppDev\eclipse-Mars-JavaEE, systemProperties size=129, envVariables size=51, logLevel=LIFECYCLE, daemonUsage=IMPLICITLY_DISABLED, continuous=false, interactive=false, injectedPluginClasspath=[]}.
The daemon we connected to was unavailable: This daemon has stopped.
org.gradle.tooling.GradleConnectionException: Could not fetch model of type ‘GradleBuild’ using Gradle distribution ‘https://services.gradle.org/distributions/gradle-2.14-bin.zip’.
at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:55)
at org.gradle.tooling.internal.consumer.ExceptionTransformer.transform(ExceptionTransformer.java:29)
at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:41)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:57)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.lang.Thread.run(Thread.java:785)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.attachCallerThreadStackTrace(BlockingResultHandler.java:57)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
at org.gradle.tooling.internal.consumer.DefaultModelBuilder.get(DefaultModelBuilder.java:51)
at com.gradleware.tooling.toolingclient.internal.DefaultToolingClient.executeAndWait(DefaultToolingClient.java:129)
at com.gradleware.tooling.toolingclient.internal.DefaultModelRequest.executeAndWait(DefaultModelRequest.java:79)
at com.gradleware.tooling.toolingmodel.repository.internal.BaseModelRepository$1.get(BaseModelRepository.java:95)
at com.gradleware.tooling.toolingmodel.repository.internal.BaseModelRepository.executeAndWait(BaseModelRepository.java:163)
at com.gradleware.tooling.toolingmodel.repository.internal.BaseModelRepository.access$000(BaseModelRepository.java:41)
at com.gradleware.tooling.toolingmodel.repository.internal.BaseModelRepository$2.call(BaseModelRepository.java:121)
at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4724)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
at com.google.common.cache.LocalCache.get(LocalCache.java:3932)
at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4721)
at com.gradleware.tooling.toolingmodel.repository.internal.BaseModelRepository.getFromCache(BaseModelRepository.java:138)
at com.gradleware.tooling.toolingmodel.repository.internal.BaseModelRepository.executeRequest(BaseModelRepository.java:117)
at com.gradleware.tooling.toolingmodel.repository.internal.BaseModelRepository.executeRequest(BaseModelRepository.java:88)
at com.gradleware.tooling.toolingmodel.repository.internal.DefaultSingleBuildModelRepository.fetchGradleBuildStructure(DefaultSingleBuildModelRepository.java:132)
at org.eclipse.buildship.core.projectimport.ProjectPreviewJob.fetchGradleBuildStructure(ProjectPreviewJob.java:94)
at org.eclipse.buildship.core.projectimport.ProjectPreviewJob.runToolingApiJobInWorkspace(ProjectPreviewJob.java:83)
at org.eclipse.buildship.core.util.progress.ToolingApiWorkspaceJob$1.run(ToolingApiWorkspaceJob.java:79)
at org.eclipse.buildship.core.util.progress.ToolingApiInvoker.invoke(ToolingApiInvoker.java:63)
at org.eclipse.buildship.core.util.progress.ToolingApiWorkspaceJob.runInWorkspace(ToolingApiWorkspaceJob.java:76)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: org.gradle.launcher.daemon.client.NoUsableDaemonFoundException: Unable to find a usable idle daemon. I have connected to 100 different daemons but I could not use any of them to run the build. BuildActionParameters were DefaultBuildActionParameters{, currentDir=C:\AppDev\eclipse-Mars-JavaEE, systemProperties size=129, envVariables size=51, logLevel=LIFECYCLE, daemonUsage=IMPLICITLY_DISABLED, continuous=false, interactive=false, injectedPluginClasspath=[]}.
at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:135)
at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:80)
at org.gradle.tooling.internal.provider.DaemonBuildActionExecuter.execute(DaemonBuildActionExecuter.java:77)
at org.gradle.tooling.internal.provider.DaemonBuildActionExecuter.execute(DaemonBuildActionExecuter.java:46)
at org.gradle.tooling.internal.provider.LoggingBridgingBuildActionExecuter.execute(LoggingBridgingBuildActionExecuter.java:60)
at org.gradle.tooling.internal.provider.LoggingBridgingBuildActionExecuter.execute(LoggingBridgingBuildActionExecuter.java:34)
at org.gradle.tooling.internal.provider.ProviderConnection.run(ProviderConnection.java:150)
at org.gradle.tooling.internal.provider.ProviderConnection.run(ProviderConnection.java:113)
at org.gradle.tooling.internal.provider.DefaultConnection.getModel(DefaultConnection.java:172)
at org.gradle.tooling.internal.consumer.connection.CancellableModelBuilderBackedModelProducer.produceModel(CancellableModelBuilderBackedModelProducer.java:54)
at org.gradle.tooling.internal.consumer.connection.PluginClasspathInjectionSupportedCheckModelProducer.produceModel(PluginClasspathInjectionSupportedCheckModelProducer.java:41)
at org.gradle.tooling.internal.consumer.connection.CompositeAwareModelProducer.produceModel(CompositeAwareModelProducer.java:62)
at org.gradle.tooling.internal.consumer.connection.AbstractConsumerConnection.run(AbstractConsumerConnection.java:60)
at org.gradle.tooling.internal.consumer.DefaultModelBuilder$1.run(DefaultModelBuilder.java:61)
at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:79)
at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:58)
at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:55)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.lang.Thread.run(Thread.java:785)
Caused by: org.gradle.launcher.daemon.client.DaemonInitialConnectException: The daemon we connected to was unavailable: This daemon has stopped.
at org.gradle.launcher.daemon.client.DaemonClient.executeBuild(DaemonClient.java:177)
at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:125)
… 23 more

Congrats to the Buildship Team!

I also noticed a new version of the soon to be released Buildship 2.0. Is there anyway to know what has changed and what is the impact if one already uses it?

Thanks you!
The novelty of Buildship 2.0 will be the composite build support which is explained in this post: Exciting new Buildship Features coming up