1

私のgradleスクリプトでは、次のようなプロパティを正常に読み取ることができました:

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

これを使用して、次のようなビルド スクリプトを実行できます。

gradlew clean assemble -Penv=prod

init.gradleこれをファイルに移動しようとしたときに問題が発生しました。ファイルが認識され、スクリプトで定義した他のプロパティを使用できますが、コマンド ラインから取得できません。これどうやってするの?

私のinit.gradleファイル:

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()
    }
}
4

1 に答える 1

1

-Pプロジェクトプロパティを設定しますが、これは init スクリプトではすぐには使用できません。(init スクリプトからプロジェクトとそのプロパティにアクセスできますが、そのアクセスはプロジェクトが作成されるまで延期されます。)ただし、システムプロパティ ( -D) を使用すると機能するはずです。

于 2013-11-14T17:52:49.040 に答える