gradle: Cannot set property 'project' on null object

1,971 views
Skip to first unread message

t...@quarendon.net

unread,
Sep 19, 2016, 10:45:21 AM9/19/16
to bndtools-users
I've just created a new OSGi enRoute workspace to try something out, and when I build it using gradle I get the following error:

* Where:
Build file 'D:\work\simple-osgi\build.gradle' line: 29

* What went wrong:
A problem occurred evaluating root project 'simple-osgi'.
> Failed to apply plugin [id 'biz.aQute.bnd']
   > Cannot set property 'project' on null object

Literally all I've done is created a workspace, then created a project using the wizard, calling it "a.b".

Workspace https://github.com/tomq42/simple-osgi if you want to look.

Clearly I've done something wrong, but no idea what. Never seen this error before.

If it makes any difference, I've currently got Bnd-3.3.0.201608051629-SNAPSHOT as the version of bndtools in eclipse.

* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'simple-osgi'.
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:92)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:177)
        at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
        at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:182)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:38)
        at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:25)
        at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:55)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:573)
        at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:125)
        at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:42)
        at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
        at org.gradle.initialization.DefaultGradleLauncher$2.run(DefaultGradleLauncher.java:124)
        at org.gradle.internal.Factories$1.create(Factories.java:22)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:121)
        at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
        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:43)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:82)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:59)
        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:49)
        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.HintGCAfterBuild.execute(HintGCAfterBuild.java:44)
        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:240)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id 'biz.aQute.bnd']
        at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:155)
        at org.gradle.api.internal.plugins.DefaultPluginManager.addImperativePlugin(DefaultPluginManager.java:67)
        at org.gradle.api.internal.plugins.DefaultPluginContainer.apply(DefaultPluginContainer.java:55)
        at org.gradle.api.plugins.PluginContainer$apply.call(Unknown Source)
        at build_yjcm3r0xfy32kjn13yypmwzr$_run_closure1.doCall(D:\work\simple-osgi\build.gradle:29)
        at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:70)
        at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:160)
        at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
        at org.gradle.api.internal.project.DefaultProject.configure(DefaultProject.java:921)
        at org.gradle.api.internal.project.DefaultProject.configure(DefaultProject.java:926)
        at org.gradle.api.internal.project.DefaultProject.subprojects(DefaultProject.java:909)
        at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:382)
        at org.gradle.internal.metaobject.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:170)
        at org.gradle.internal.metaobject.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:96)
        at org.gradle.internal.metaobject.MixInClosurePropertiesAsMethodsDynamicObject.invokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:30)
        at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:163)
        at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.java:83)
        at build_yjcm3r0xfy32kjn13yypmwzr.run(D:\work\simple-osgi\build.gradle:26)
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
        ... 58 more
Caused by: java.lang.NullPointerException: Cannot set property 'project' on null object
        at aQute.bnd.gradle.BndPlugin$_apply_closure1.doCall(BndPlugin.groovy:64)
        at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:70)
        at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:160)
        at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
        at org.gradle.api.internal.project.DefaultProject.configure(DefaultProject.java:921)
        at org.gradle.api.Project$configure.call(Unknown Source)
        at aQute.bnd.gradle.BndPlugin.apply(BndPlugin.groovy:42)
        at aQute.bnd.gradle.BndPlugin.apply(BndPlugin.groovy)
        at org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator.applyImperative(ImperativeOnlyPluginApplicator.java:35)
        at org.gradle.api.internal.plugins.RuleBasedPluginApplicator.applyImperative(RuleBasedPluginApplicator.java:43)
        at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:139)
        ... 76 more

BJ Hargrave

unread,
Sep 19, 2016, 10:53:19 AM9/19/16
to bndtool...@googlegroups.com
Oops.

See https://github.com/bndtools/bnd/wiki/Changes-in-3.2.0#known-issues. The Bnd 3.2 gradle plugin does not work with Gradle 2.14 or later. And I upgraded the osgi/workspace gradlew to 3.0 before Bnd 3.3 was released.

So you can either:
- use a local gradle installation which is 2.13,
- change the gradle wrapper in the project to 2.13,
- or configure the workspace to use the Bnd 3.3 snapshot gradle plugin. (The details are in a previous email to this list announce the RC builds).

Once Bnd 3.3 is released, I'll fix the osgi/workspace to use the Bnd 3.3 gradle plugin.


--
You received this message because you are subscribed to the Google Groups "bndtools-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bndtools-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
--
BJ

t...@quarendon.net

unread,
Sep 19, 2016, 11:10:37 AM9/19/16
to bndtools-users


On Monday, 19 September 2016 15:53:19 UTC+1, BJ Hargrave wrote:
- or configure the workspace to use the Bnd 3.3 snapshot gradle plugin. (The details are in a previous email to this list announce the RC builds).


OK, I  replaced the existing "buildscript" bit in build.gradle with:

buildscript {
  repositories {
    maven {
    }
  }
  dependencies {
    classpath 'biz.aQute.bnd:biz.aQute.bnd.gradle:3.3.0-SNAPSHOT'
  }
}

and it seemed to work.
Thanks.

BJ Hargrave

unread,
Sep 19, 2016, 11:12:46 AM9/19/16
to bndtool...@googlegroups.com
You should have changed that in settings.gradle, not build.gradle. build.gradle will use the buildscript classpath established by settings.gradle.

Also, for now, I reverted the commit in osgi/workspace to use gradlew 3.0.

--
You received this message because you are subscribed to the Google Groups "bndtools-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bndtools-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
--
BJ

t...@quarendon.net

unread,
Sep 20, 2016, 5:52:00 AM9/20/16
to bndtools-users


On Monday, 19 September 2016 16:12:46 UTC+1, BJ Hargrave wrote:
You should have changed that in settings.gradle, not build.gradle. build.gradle will use the buildscript classpath established by settings.gradle.

The settings.gradle file has:

/* Add bnd gradle plugin as a script dependency */
buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath bnd_plugin
  }
  /* Pass bnd gradle plugin classpath to rootProject once created */
  def bndPlugin = files(configurations.classpath.files)
  gradle.rootProject { rootProject ->
    rootProject.ext.bndPlugin = bndPlugin
  }

So what should it look like? Replace the whole section? Leave the "Pass the bnd..." bit and all that follows?

BJ Hargrave

unread,
Sep 20, 2016, 8:37:45 AM9/20/16
to bndtool...@googlegroups.com
Add the cloudbees URL to the repositories section. Then you can either replace the classpath or edit the property in the gradle.properties file.
--
--
BJ
Reply all
Reply to author
Forward
0 new messages