On 11/01/2011, at 2:44 AM, Hendy Irawan wrote:

> 
> This doesn't work:
> 
> bippoAdminDir = "${System.properties['user.home']}/project/Bippo/bippoadmin"
> 
> buildscript {
> 
>       repositories {
>               flatDir name: 'bippoAdminDir', dirs: bippoAdminDir + 
> "/build/libs"
>       }
> ...

The buildscript { } closure is extracted and executed before any other 
statements in the script. This is so that it can declare the classpath to use 
to compile the rest of the script.

We can probably figure out a way to make the above work. Could you add a JIRA 
issue for this?

In the meantime, you can add the variable definition to the buildscript { } 
closure:

buildscript {
    bippoAdminDir = '...'
    ...
}


> 
> 
> Also doesn't work:
> 
> rootProject.bippoAdminDir =
> "${System.properties['user.home']}/project/Bippo/bippoadmin"
> 
> buildscript {
> 
>       repositories {
>               flatDir name: 'bippoAdminDir', dirs: rootProject.bippoAdminDir +
> "/build/libs"
>       }
> ...
> 
> 
> Also doesn't work:
> 
> String bippoAdminDir() {
>       "${System.properties['user.home']}/project/Bippo/bippoadmin"
> }
> 
> buildscript {
>       repositories {
>               flatDir name: 'bippoAdminDir', dirs: bippoAdminDir() + 
> "/build/libs"
> ...
> 
> 
> Error is similar :
> 
> Caused by: groovy.lang.MissingPropertyException: Could not find property
> 'bippoAdminDir' on root project 'clients'.
>       at
> org.gradle.api.internal.AbstractDynamicObject.propertyMissingException(AbstractDynamicObject.java:43)
>       at
> org.gradle.api.internal.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:35)
>       at
> org.gradle.api.internal.CompositeDynamicObject.getProperty(CompositeDynamicObject.java:54)
>       at
> org.gradle.api.internal.project.DefaultProject_Decorated.getProperty(Unknown
> Source)
>       at
> build_5pi9c98tq43udo1nd43mslf53j$_run_closure1_closure2.doCall(/home/ceefour/project/Bippo/clients/build.gradle:16)
>       at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:61)
>       at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:31)
>       at
> org.gradle.api.internal.initialization.AbstractScriptHandler.repositories(AbstractScriptHandler.java:66)
>       at
> build_5pi9c98tq43udo1nd43mslf53j$_run_closure1.doCall(/home/ceefour/project/Bippo/clients/build.gradle:13)
>       at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:61)
>       at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:31)
>       at
> org.gradle.api.internal.project.AbstractProject.buildscript(AbstractProject.java:920)
>       at org.gradle.api.Project$buildscript.call(Unknown Source)
>       at
> org.gradle.api.internal.project.ProjectScript.buildscript(ProjectScript.groovy:43)
>       at org.gradle.api.Script$buildscript.callCurrent(Unknown Source)
>       at
> build_5pi9c98tq43udo1nd43mslf53j.run(/home/ceefour/project/Bippo/clients/build.gradle:11)
>       at
> org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:49)
>       ... 24 more
> 
> 
> The strange thing is that code inside 'buildscript' can access project and
> rootProject variables.
> 
> So I'm puzzled why they can't access project's properties, especially since
> the property is defined before the buildscript block.
> 
> -----
> http://www.HendyIrawan.com
> -- 
> View this message in context: 
> http://gradle.1045684.n5.nabble.com/buildscript-closure-cannot-access-project-properties-tp3334992p3334992.html
> Sent from the gradle-user mailing list archive at Nabble.com.
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
> 
>    http://xircles.codehaus.org/manage_email
> 
> 


--
Adam Murdoch
Gradle Developer
http://www.gradle.org
CTO, Gradle Inc. - Gradle Training, Support, Consulting
http://www.gradle.biz

Reply via email to