Kotlin gradle对此感到困惑';s项目之家

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) 如果

在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)
如果我在
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