当命令行中 运行 "./gradlew <task>" 时,读取的是什么文件?
When running "./gradlew <task>" in command line, what file is read?
我做了一些挖掘,但没有找到太多信息。
我最好的猜测是 build.gradle
文件是默认文件,但我很好奇其行为以及读取的文件。
在这种情况下,build.gradle
是在您 运行 gradlew
所在的同一目录下读取的。其他也可以读取的文件是 settings.gradle
,但不能在那里声明任务。
运行 不同的 gradle 脚本使用 -b
开关并将路径传递给脚本。
此外,您为什么认为可能会读取任何其他文件?
虽然另一个答案涵盖了所有构建的 99.99%,但它并不完整。
完整的命令是./gradlew [-b / --build-file <build.file>] [-c / --settings-file <settings.file>]
。当你 运行 它时,那些指定的 <build.file>
和 <settings.file>
将被用来配置构建和相应的设置。设置文件很特殊:它配置你的 Project
objects on the very early stages of your build and it can actually override 它是构建文件。
示例如下(抱歉已弃用 <<
,仅用于缩短代码):
默认build.gradle
,没有settings.gradle
:
build.gradle
:
task hello << { println "Hello" }
结果:
$ ./gradlew hello
:hello
Hello
自定义build.gradle
,无settings.gradle
:
custom.gradle
:
task hello << { println "Hi!" }
结果:
$ ./gradlew -b custom.gradle hello
:hello
Hi!
自定义build.gradle
,配置在settings.gradle
:
custom.gradle
:
task hello << { println "Konnichi wa" }
settings.gradle
:
rootProject.buildFileName = 'custom.gradle'
结果:
./gradlew hello # note that we don't need any flags here as with a default build
:hello
Konnichi wa
自定义build.gradle
,自定义配置settings.gradle
:
custom.gradle
:
task hello << { println "Aloha!" }
settings.custom
:
rootProject.buildFileName = 'custom.gradle'
结果:
./gradlew -c settings.custom hello # note how we pass custom settings file which, in turn, specifies custom `build.gradle`
:hello
Aloha!
这主要是花哨而不实用,但您可以结合这些方法来存储,例如,将所有构建文件存储在一个单独的目录中(覆盖 buildFileName
)。或者你可以有类似 "build profiles" 的东西,有多个 settings.gradle
,有不同的 include
集(设置也用于将项目包含到你的构建中,所以你可以有像 "full build"、"ui"、"external clients" 等等)。
唯一的限制是你的想象力。
我做了一些挖掘,但没有找到太多信息。
我最好的猜测是 build.gradle
文件是默认文件,但我很好奇其行为以及读取的文件。
在这种情况下,build.gradle
是在您 运行 gradlew
所在的同一目录下读取的。其他也可以读取的文件是 settings.gradle
,但不能在那里声明任务。
运行 不同的 gradle 脚本使用 -b
开关并将路径传递给脚本。
此外,您为什么认为可能会读取任何其他文件?
虽然另一个答案涵盖了所有构建的 99.99%,但它并不完整。
完整的命令是./gradlew [-b / --build-file <build.file>] [-c / --settings-file <settings.file>]
。当你 运行 它时,那些指定的 <build.file>
和 <settings.file>
将被用来配置构建和相应的设置。设置文件很特殊:它配置你的 Project
objects on the very early stages of your build and it can actually override 它是构建文件。
示例如下(抱歉已弃用 <<
,仅用于缩短代码):
默认build.gradle
,没有settings.gradle
:
build.gradle
:
task hello << { println "Hello" }
结果:
$ ./gradlew hello
:hello
Hello
自定义build.gradle
,无settings.gradle
:
custom.gradle
:
task hello << { println "Hi!" }
结果:
$ ./gradlew -b custom.gradle hello
:hello
Hi!
自定义build.gradle
,配置在settings.gradle
:
custom.gradle
:
task hello << { println "Konnichi wa" }
settings.gradle
:
rootProject.buildFileName = 'custom.gradle'
结果:
./gradlew hello # note that we don't need any flags here as with a default build
:hello
Konnichi wa
自定义build.gradle
,自定义配置settings.gradle
:
custom.gradle
:
task hello << { println "Aloha!" }
settings.custom
:
rootProject.buildFileName = 'custom.gradle'
结果:
./gradlew -c settings.custom hello # note how we pass custom settings file which, in turn, specifies custom `build.gradle`
:hello
Aloha!
这主要是花哨而不实用,但您可以结合这些方法来存储,例如,将所有构建文件存储在一个单独的目录中(覆盖 buildFileName
)。或者你可以有类似 "build profiles" 的东西,有多个 settings.gradle
,有不同的 include
集(设置也用于将项目包含到你的构建中,所以你可以有像 "full build"、"ui"、"external clients" 等等)。
唯一的限制是你的想象力。