9

build.gradleファイルにプロパティを設定し、各開発者がそれをローカルでオーバーライドできるようにするにはどうすればよいですか?私は試した:

gradle.properties:

MY_NAME = "Jonathon"
MY_COLOR = "blue"

build.gradle:

ext.MY_NAME = "John Doe"
task showit <<{
  println "MY_NAME[" + MY_NAME + "]";
  println "MY_COLOR[" + MY_COLOR + "]";
}

gradle showit与える:

:showit
MY_NAME[John Doe]
MY_COLOR["blue"]

プロジェクトルートのgradle.propertiesファイルで定義されたプロパティは、build.gradleで定義された同じ名前のプロパティをオーバーライドすると思いましたが、そうではないようです。不足しているプロパティを埋めるだけです。

4

4 に答える 4

8

プロジェクトにプロパティがあるかどうかを確認し、ない場合はデフォルト値に設定します。

ext {
    if (!project.hasProperty('MY_NAME')) {
        MY_NAME = 'John Doe'
    }
}

参照: https://docs.gradle.org/current/userguide/build_environment.html#sub:checking_for_project_properties

複数のプロパティに対してこれを行う必要がある場合は、関数を定義できます。

def setPropertyDefaultValueIfNotCustomized(propertyName, defaultValue) {
    if (!project.hasProperty(propertyName)) {
        ext[propertyName] = defaultValue
    }
}

ext {
    setPropertyDefaultValueIfNotCustomized('MY_NAME', 'John Doe')
}
于 2015-10-29T12:17:31.277 に答える
1

ローカル変数を定義して、このようにオーバーライドできると思います

  def dest = "name"

  task copy(type: Copy) {
     from "source"
     into name
  }

このドキュメントを参照してください

于 2013-01-17T21:38:21.357 に答える