在命令行中运行“./gradlew <task>”时,会读取哪个文件?

时间:2017-11-10 15:05:01

标签: java gradle command-line build.gradle gradlew

我做了一些挖掘,但没有找到太多信息。

我最好的猜测是build.gradle文件是默认文件,但我对行为和阅读的文件感到好奇。

2 个答案:

答案 0 :(得分:4)

虽然另一个答案涵盖了99.99%的所有构建,但它并不完整。

完整命令为./gradlew [-b / --build-file <build.file>] [-c / --settings-file <settings.file>]。当您运行时,指定的<build.file><settings.file>将用于相应地配置构建及其设置。设置文件很特别:它会在您构建的最初阶段配置您的Project个对象,它实际上可以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)。或者你可以拥有像#34; build profiles&#34;使用多个settings.gradle,具有不同的include个设置(设置也用于将项目包含到您构建中,因此您可以使用&#34;完整版本&#34;,&#34; ui&#34;,&#34;外部客户&#34;等等。)

唯一的限制是你的想象力。

答案 1 :(得分:3)

在这种情况下,build.gradle将在您运行gradlew的同一目录下读取。其他可能也被读取的文件是settings.gradle,但不能在那里声明任务。

要运行不同的gradle脚本,请使用-b开关并将路径传递给脚本。

另外,为什么你认为可能会读取任何其他文件?