Buildscript classpath used in buildSrc plugin no longer working with latest 1.12 2014-03-01

I just updated from 1.12 2014-02-05 to 2014-03-01 and got a problem with the buildscript classpath:

Using

buildscript {
  dependencies {
    classpath files('Extern/gradle/ant.lib/p4java.jar')
  }
}

it seems that our plugins built in buildSrc/… can no longer find the classes defined in the buildscript classpath.

It worked in 1.12 2014-02-05.

Anyone knows how to fix this ?

Can you explain this a little more?

It sounds like you have classes in buildSrc, that depend on classes that you add to the build’s build.gradle file. Is that it?

I have a plugin that calls

public void apply(Project project) {
   project.apply from: ...some script....

In this script I do

buildscript {
  dependencies {
    classpath files('Extern/gradle/ant.lib/ivyp4.jar')
  }
}
repositories {
   add(new com.orga.ivy.plugins.p4resolver.P4Resolver()) {
      ...
   }
}

With the latest 1.12 it complains that it cannot find class com.orga.ivy.plugins.p4resolver.P4Resolver (which is in the jar defined before).

I’m having trouble reproducing your problem.

Would you be able to supply a small project that I can run to experience the problem?

While trying to get a small repo running I tracked down the problem to the classpath files(…).

Using an absolute path seems to work:

buildscript {
  dependencies {
    classpath fileTree(dir: rootDir.absolutePath + '/Extern/gradle/ant.lib', includes:['ivyp4.jar','p4java.jar'])
    // worked for 1.7, but not with 1.12: classpath files('Extern/gradle/ant.lib/ivyp4.jar')
  }
}

Where is this ‘Extern’ directory in relation to the project root?

Its like this

buildSrc/...
Extern/...
Java/SubProject/...
build.gradle
settings.gradle

The buildSrc plugin is also applied it the rootProject. Applying it in the SubProject fails with files(…) .

Is there a way to define a repository only once and have all projects inherit this ? Currently it looks like every sub-project will instantiate its own resolver.

I actually don’t understand why this ever worked, it shouldn’t have.

Can you please try:

buildscript {
  dependencies {
    classpath rootProject.files('Extern/gradle/ant.lib/ivyp4.jar')
  }
}