Gradle 1.3-rc-1 is out!

Gradle 1.3-rc-1 is out! Information about the RC can be found at http://gradle.org/release-candidate as always. Please give it a spin - we are looking for your feedback about the new features. Also, let us know if you encounter any issues.

Check the release notes for the key new features.

Enjoy!

Awesome! Unfortunately I’ve encountered the following when trying to upgrade from v1.2

New scalaConsole task

Please document that this task was added, as it conflicted with our custom one. It might be nice if the gradle task included the classes (not just main classes). The console appears to suffer from the same problems that our custom task had:

  • The Scala REPL does not run well in Gradle daemon mode - Command completion and history do not work properly - The console must be reset due to a jline bug - Best to use quiet mode for a clean console.

I’d advise using the following when running the scalaConsole task: $ gradle -q scalaConsole --no-daemon; reset

Zinc Compiler Options

The Zink incremental Scala compiler does not appear to support specifying a maximum file name length for generated classes. We enable this option for developer machines, some of which are running on encrypted ext4 partitions. Due to a bug, the maximum file name is 143 characters.

This becomes an issue when using the fatJar when packaging a deployment jar. We are moving to the application plugin’s zip for server deployments due to being faster and a cleaner approach, but still use fatJar for a client Swing application. I’m hopeful that this will not be a problem as we do not use Scala for this application yet, are migrating all deployment processes to be driven through Jenkins, and replacing this client application with a webapp.

The following configuration fails when using Zinc. It would be helpful if the user guide linked to the Zinc compiler options as they appear to differ from scalac.

scalaCompileOptions.additionalParameters = ['-Xmax-classfile-name 127']
19:04:07.337 [Daemon] INFO
o.g.a.i.t.s.jdk6.ZincScalaCompiler - Compiling 4 Scala sources to /home/ben/projects/AMP/infra/libraries/testing/build/classes/main...
19:04:07.351 [Daemon] INFO
o.g.a.i.t.s.jdk6.ZincScalaCompiler - bad option: '-Xmax-classfile-name 127'
19:04:07.356 [Daemon] INFO
o.g.a.i.t.s.jdk6.ZincScalaCompiler - Compilation failed (CompilerInterface)
:infra:libraries:testing:compileScala FAILED

Zinc Compiler Output

The output is currently very verbose. This may be configured for development but please prune it down in the final release.

Scala compilation in external process

The ‘fork’ and ‘forkOptions’ does not appear to be available on the ScalaCompiler.

$ gradle clean build
  FAILURE: Build failed with an exception.
  * Where:
Script '/home/ben/projects/AMP/gradle/scala.gradle' line: 48
  * What went wrong:
A problem occurred evaluating script.
> No such property: fork for class: org.gradle.api.tasks.scala.ScalaCompile
  * Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
  BUILD FAILED

PermGen Scala compilation in external process

Performing a ‘gradle clean build’ results in PermGen space failure. An incremental build afterwards works.

I have not determined a work around yet for a clean build. I increased the ‘test.jvmArgs’ from 256m to 512m but that didn’t appear to help…

Please disregard the request that the ‘scalaConsole’ task include the test classes. I didn’t notice the new ‘scalaTestConsole’ task. These tasks are not grouped so I now have the following build configuration:

scalaConsole.group = "Scala"
scalaTestConsole.group = "Scala"
  scalaConsole.doFirst {
  if (gradle.startParameter.logLevel < LogLevel.QUIET) {
    println("Note: The Scala REPL works best in quiet mode.")
    println("Recommended usage: gradle -q scalaConsole; reset")
  }
  if (Boolean.getBoolean("org.gradle.daemon")) {
    println("Note: The Scala REPL does not run well in Gradle daemon mode.")
    println("Command completion and history do not work properly.")
  }
}

So I guess we’re not going to see the official/improved pom2gradle converter in this release? I’ve been waiting for this to be ready before delving into Gradle.

Regards, Ari

Settings the daemon’s jvmargs appears to solve the PermGen problem, but its not an ideal solution imho.

org.gradle.jvmargs=-XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+HeapDumpOnOutOfMemoryError -Xmx1024m -Dfile.encoding=utf-8

Digging into the source code I figured out how to configure the forked process and remove the daemon jvmargs hack. For some reason using ‘tasks.withType(org.gradle.api.tasks.scala.ScalaCompile)’ to configure didn’t work, but using ‘compileScala.scalaCompileOptions.with’ works great.

Thanks for your feedback. We are aware of the issues with ‘scalaConsole’; that’s why we haven’t announced it yet. The verbose logging is a bug that’s already fixed and will be part of RC-2 (if there is one). The Zinc settings that you linked to are only relevant when using the Zinc command-line compiler, but not when using Zinc with Gradle. I’ll investigate the issue with ‘-Xmax-classfile-name’. I’ll also add some docs on how to increase permgen for Scala compilation.

That’s correct. We’d like to tidy it up a bit more before officially announcing. However, the functionality is there, it is documented, please use it and give us feedback. In 1.3 we fixed a couple of bugs in the maven2Gradle conversion.

‘-Xmax-classfile-name’ is passed correctly to scalac. One way to verify this is to set the value to less than 72, in which case scalac will complain. I’ve tried with plain command-line scalac, and even there ‘-Xmax-classfile-name’ didn’t have any effect on my classes. So either this flag is meant for something else (e.g. only for synthetic classes generated by the compiler), or you’ve found a scalac issue.

After asking back on the Scala list, it turns out that ‘-Xmax-classfile-name’ only affects nested classes. I’ve verified that this works just fine with Gradle/Zinc.

Thanks Peter. Sorry for the runaround if everything appears to work on your side. It would be nice to know how you configured your scala compile options as I still receive a ‘bad option’ error message from Zinc if the additional parameter is set, regardless of whether the value is below 72. I’m not concerned about making this work since our processes are changing, but I’d like to know what I’m doing wrong. :slight_smile:

This is an amazing release and I appreciate all of the hard work your team put into it!

compileScala.scalaCompileOptions.with {
  additionalParameters = ["-Xmax-classfile-name 127"]
    // Enable incremental compilation by default. Due to the overhead of dependency analysis, a clean
  // compilation or a compilation after a larger code change may take longer than with the Ant based
  // compiler. For CI builds and release builds, the more mature Ant based compiler is recommended.
  useAnt = project.hasProperty("scala.useAnt")
    // Scala compilation can now be performed outside the Gradle JVM in a dedicated compiler process,
  // which can help to deal with memory issues. External compilation is supported both for the
  // Ant-based and the new Zinc-based Scala compiler. ScalaCompile.fork = true activates external
  // compilation; ScalaCompile.forkOptions allows adjusting the memory settings.
  forkOptions.jvmArgs += ["-XX:MaxPermSize=512m", "-Xmx1024m", "-XX:+CMSClassUnloadingEnabled"]
  fork = true
}

scalac probably expects this to be passed as two arguments (i.e. ‘["-Xmax-classfile-name", 127]’), although ‘["-Xmax-classfile-name 127"]’ also works for me.

Thanks Peter, that seemed to do the trick.

Upgrading from 1.2 to 1.3-rc-1 gives me a nullpointer exception while generating the eclipse files

Execution failed for task ':subproject:eclipseClasspath'.
> Could not resolve all dependencies for configuration ':subproject:testRuntime'.
   > java.lang.NullPointerException (no error message)
  * Try:
Run with --info or --debug option to get more log output.
  * Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':myunidoc-gui-components:eclipseClasspath'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:68)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:34)
        at org.gradle.api.internal.changedetection.CacheLockHandlingTaskExecuter$1.run(CacheLockHandlingTaskExecuter.java:34)
        at org.gradle.internal.Factories$1.create(Factories.java:22)
        at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:179)
        at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:232)
        at org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:138)
        at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCacheAccess.longRunningOperation(DefaultTaskArtifactStateCacheAccess.java:83)
        at org.gradle.api.internal.changedetection.CacheLockHandlingTaskExecuter.execute(CacheLockHandlingTaskExecuter.java:32)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42)
        at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:247)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.executeTask(DefaultTaskPlanExecutor.java:52)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.processTask(DefaultTaskPlanExecutor.java:38)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:30)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:83)
        at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
        at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
        at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
        at org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter$1.run(TaskCacheLockHandlingBuildExecuter.java:31)
        at org.gradle.internal.Factories$1.create(Factories.java:22)
        at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:124)
        at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:112)
        at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:130)
        at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79)
        at org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter.execute(TaskCacheLockHandlingBuildExecuter.java:29)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
        at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)
        at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)
        at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)
        at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:158)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)
        at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:38)
        at org.gradle.launcher.exec.InProcessGradleLauncherActionExecuter.execute(InProcessGradleLauncherActionExecuter.java:39)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:45)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:42)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.ReturnResult.execute(ReturnResult.java:34)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:70)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:68)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:68)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:59)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:45)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator.runCommand(DaemonStateCoordinator.java:186)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy.doBuild(StartBuildOrRespondWithBusy.java:49)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.HandleStop.execute(HandleStop.java:36)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.CatchAndForwardDaemonFailure.execute(CatchAndForwardDaemonFailure.java:32)
        at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:126)
        at org.gradle.launcher.daemon.server.exec.DefaultDaemonCommandExecuter.executeCommand(DefaultDaemonCommandExecuter.java:48)
        at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.handleCommand(DefaultIncomingConnectionHandler.java:155)
        at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.receiveAndHandleCommand(DefaultIncomingConnectionHandler.java:128)
        at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.run(DefaultIncomingConnectionHandler.java:116)
        at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:66)
Caused by: org.gradle.api.artifacts.ResolveException: Could not resolve all dependencies for configuration ':myunidoc-gui-components:testRuntime'.
        at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver.wrapException(ErrorHandlingArtifactDependencyResolver.java:49)
        at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver.access$000(ErrorHandlingArtifactDependencyResolver.java:27)
        at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver$BrokenResolvedConfiguration.getLenientConfiguration(ErrorHandlingArtifactDependencyResolver.java:125)
        at org.gradle.plugins.ide.internal.IdeDependenciesExtractor.resolveDependencies(IdeDependenciesExtractor.groovy:157)
        at org.gradle.plugins.ide.internal.IdeDependenciesExtractor.this$2$resolveDependencies(IdeDependenciesExtractor.groovy)
        at org.gradle.plugins.ide.internal.IdeDependenciesExtractor$this$2$resolveDependencies.callCurrent(Unknown Source)
        at org.gradle.plugins.ide.internal.IdeDependenciesExtractor.extractRepoFileDependencies(IdeDependenciesExtractor.groovy:75)
        at org.gradle.plugins.ide.internal.IdeDependenciesExtractor$extractRepoFileDependencies.call(Unknown Source)
        at org.gradle.plugins.ide.eclipse.model.internal.ClasspathFactory$4.update(ClasspathFactory.groovy:55)
        at org.gradle.plugins.ide.eclipse.model.internal.ClasspathEntryBuilder$update.call(Unknown Source)
        at org.gradle.plugins.ide.eclipse.model.internal.ClasspathFactory.createEntries(ClasspathFactory.groovy:82)
        at org.gradle.plugins.ide.eclipse.model.internal.ClasspathFactory$createEntries.call(Unknown Source)
        at org.gradle.plugins.ide.eclipse.model.EclipseClasspath.resolveDependencies(EclipseClasspath.groovy:211)
        at org.gradle.plugins.ide.eclipse.model.EclipseClasspath.mergeXmlClasspath(EclipseClasspath.groovy:218)
        at org.gradle.plugins.ide.eclipse.model.EclipseClasspath$mergeXmlClasspath.call(Unknown Source)
        at org.gradle.plugins.ide.eclipse.GenerateEclipseClasspath.configure(GenerateEclipseClasspath.groovy:45)
        at org.gradle.plugins.ide.eclipse.GenerateEclipseClasspath.configure(GenerateEclipseClasspath.groovy)
        at org.gradle.plugins.ide.api.XmlGeneratorTask$1.configure(XmlGeneratorTask.java:37)
        at org.gradle.plugins.ide.api.XmlGeneratorTask$1.configure(XmlGeneratorTask.java:31)
        at org.gradle.plugins.ide.api.GeneratorTask.generate(GeneratorTask.java:75)
        at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:216)
        at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:122)
        at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147)
        at org.gradle.plugins.ide.eclipse.GenerateEclipseClasspath_Decorated.invokeMethod(Unknown Source)
        at org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:23)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$4.execute(AnnotationProcessingTaskFactory.java:161)
        at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$4.execute(AnnotationProcessingTaskFactory.java:156)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:472)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:461)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:60)
        ... 78 more
Caused by: java.lang.NullPointerException
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.ResolutionResultBuilder.resolvedConfiguration(ResolutionResultBuilder.java:60)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder.assembleResult(DependencyGraphBuilder.java:157)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder.resolve(DependencyGraphBuilder.java:67)
        at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultDependencyResolver.resolve(DefaultDependencyResolver.java:69)
        at org.gradle.api.internal.artifacts.ivyservice.CacheLockingArtifactDependencyResolver$1.create(CacheLockingArtifactDependencyResolver.java:36)
        at org.gradle.api.internal.artifacts.ivyservice.CacheLockingArtifactDependencyResolver$1.create(CacheLockingArtifactDependencyResolver.java:34)
        at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:124)
        at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:126)
        at org.gradle.api.internal.artifacts.ivyservice.DefaultCacheLockingManager.useCache(DefaultCacheLockingManager.java:49)
        at org.gradle.api.internal.artifacts.ivyservice.CacheLockingArtifactDependencyResolver.resolve(CacheLockingArtifactDependencyResolver.java:34)
        at org.gradle.api.internal.artifacts.ivyservice.SelfResolvingDependencyResolver.resolve(SelfResolvingDependencyResolver.java:39)
        at org.gradle.api.internal.artifacts.ivyservice.ShortcircuitEmptyConfigsArtifactDependencyResolver.resolve(ShortcircuitEmptyConfigsArtifactDependencyResolver.java:44)
        at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver.resolve(ErrorHandlingArtifactDependencyResolver.java:37)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveNow(DefaultConfiguration.java:239)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getResolvedConfiguration(DefaultConfiguration.java:229)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getResolvedConfiguration(Unknown Source)
        at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.getProperty(BeanDynamicObject.java:146)
        at org.gradle.api.internal.BeanDynamicObject.getProperty(BeanDynamicObject.java:102)
        at org.gradle.api.internal.CompositeDynamicObject.getProperty(CompositeDynamicObject.java:78)
        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getProperty(Unknown Source)
        ... 105 more

Hey Rolf,

Thanks a lot for reporting! Any chance we can get hold of a smaller sample that reproduces the problem?

Added jira ticket for the NPE issue: http://issues.gradle.org/browse/GRADLE-2555

This little build.gradle should reproduce the issue, when you run “gradle eclipse” using 1.3-rc-1

apply plugin: 'war'
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'eclipse-wtp'
  repositories {
 mavenCentral()
}
  dependencies {
 compile ("com.google.gwt.inject:gin:1.5.0") {
  exclude module: "gwt-servlet"
 }
   providedCompile("com.gwtplatform:gwtp-mvp-client:0.7") {
  exclude module: 'aopalliance'
 }
}

According to the pom.xml, gwtp-mvp-client depends on gin

Adding an exclude module: ‘gin’ to the providedCompile dependency didn’t help. Adding transitive = false however, did resolve the NPE :slight_smile:

Greets Rolf

So we can track this properly, I’m splitting this off on to its own thread. Please reference the new topic here: Gradle 1.3-rc-1 generates NullPointerException when resolving dependencies