Kotlin gradle对此感到困惑';s项目之家
在build.gradle.kts中我有Kotlin gradle对此感到困惑';s项目之家,kotlin,gradle,Kotlin,Gradle,在build.gradle.kts中我有 rootProject.name = "adaptors" // I have also used File("."), same results file(".").walkTopDown().filter { it.extension == "sln" }.map { it.path.split('/','\\')[1] }.forEach(::include) 如果
rootProject.name = "adaptors"
// I have also used File("."), same results
file(".").walkTopDown().filter { it.extension == "sln" }.map { it.path.split('/','\\')[1] }.forEach(::include)
如果我在kotlinc
中运行此程序,它将按预期工作:
>>> File(".").walkTopDown().filter { it.extension == "sln" }.map { it.path.split('/','\\')[1] }.take(5).forEach{println(it)}
adaptor-cwi_ca_los_angeles
adaptor-socwi_vt
adaptor-qc_oh_butler
adaptor-pwi_tx_mc_tor
adaptor-fdi_globex
然而,当我要求gradle向我展示它的项目时:
cbongiorno at 5cg6203867 in ~/dev/adaptors on INIT-471 [!?]
$ gradle projects
> Task :projects
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'adaptors'
\--- Project ':Users'
To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :Users:tasks
下面是确认我理解的bash代码:
cbongiorno at 5cg6203867 in ~/dev/adaptors on INIT-471 [!?]
$ pwd
/Users/cbongiorno/dev/adaptors
cbongiorno at 5cg6203867 in ~/dev/adaptors on INIT-471 [!?]
$ ls *.kts
build.gradle.kts settings.gradle.kts
cbongiorno at 5cg6203867 in ~/dev/adaptors on INIT-471 [!?]
$ ls Users
ls: Users: No such file or directory
现在,更令人震惊的是,假设这是错误的,树行走代码仍然可以找到所有的解决方案文件,并且仍然可以正常工作。除此之外,这会导致其他代码爆炸,因为!该目录甚至不存在
我在windows和mac上遇到了完全相同的问题
那么,gradle究竟是如何得出这些结论的?我该如何解决它呢?长话短说:它实际上与
文件(“.”)一起工作
Gradle方法始终返回绝对文件路径,因为任何相对路径都是相对于项目目录进行解释的
如果给定相对输入路径,Kotlin方法walkTopDown
似乎返回相对文件路径,如果给定绝对输入路径,则返回绝对文件路径。对于相对文件路径,it.path.split(“/”,“\\”)[1]
将实际返回.sln
文件的父目录的名称,但是对于绝对文件路径,它将返回文件系统根目录后的第一个文件夹的名称(例如/Users/cbongiorno/dev/adapters
)。这就是Gradle创建名为Users
的子项目的原因
Gradle并不关心没有使用此名称的实际目录,因为它也不关心缺少或为空的build.Gradle
文件。您甚至可以通过项目(':')
、子项目
或所有项目
非常有见地的方式从其他项目构建脚本中完全配置项目!
cbongiorno at 5cg6203867 in ~/dev/adaptors on INIT-471 [!?]
$ pwd
/Users/cbongiorno/dev/adaptors
cbongiorno at 5cg6203867 in ~/dev/adaptors on INIT-471 [!?]
$ ls *.kts
build.gradle.kts settings.gradle.kts
cbongiorno at 5cg6203867 in ~/dev/adaptors on INIT-471 [!?]
$ ls Users
ls: Users: No such file or directory