Sababado
Sababado

Reputation: 2532

init.gradle read properties from command line

In my gradle script I've been able to successfully read properties like this:

def environment = hasProperty('env') ? env : 'dev'

Using this I can execute a build script like this:

gradlew clean assemble -Penv=prod

My issue comes in when I tried moving this to an init.gradle file. The file is recognized and I'm able to use other properties that I define in the script, however I'm not able to get any from the command line. How can I do this?

My init.gradle file:

allprojects {
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.6.+'
        }
    }
    project.ext['nexusDomainName'] = 'https://example.com/nexus'
    project.ext['compileSdkVersion'] = 19
    project.ext['buildToolsVersion'] = "19"
    project.ext['minSdkVersion'] = 8
    project.ext['targetSdkVersion'] = 19

    project.ext['sourceCompatibility'] = '1.7'
    project.ext['targetCompatibility'] = '1.7'

    //hasProperty('release') is always false
    project.ext['archiveType'] = hasProperty('release') ? '' : '-SNAPSHOT'
    project.ext['archiveUrl'] = hasProperty('release') ? "$nexusDomainName/content/repositories/releases/" : "$nexusDomainName/content/repositories/snapshots/"


    // This buildEnv property won't read either
    project.ext['buildEnv'] = hasProperty('env') ? env : 'dev'
    println "prepping for $buildEnv"
    project.ext['archivesBaseNameSuffix'] = (project.ext['buildEnv'] == 'stage' || project.ext['buildEnv'] == 'dev') ? '-' + project.ext['buildEnv'] : ''

    repositories {
        mavenLocal()
        maven {
            credentials {
                username 'username'
                password 'password'
            }
            url "$nexusDomainName/content/groups/public/"
        }
        mavenCentral()
    }
}

Upvotes: 2

Views: 1685

Answers (1)

Peter Niederwieser
Peter Niederwieser

Reputation: 123900

-P sets a project property, which isn't immediately available in an init script. (You can access projects and their properties from an init script, but that access will be deferred until the projects have been created.) However, using a system property (-D) should work.

Upvotes: 2

Related Questions