' 在根项目 'project_name' 中找不到。一些候选人是:'fatJar'

' not found in root project 'project_name'. Some candidates are: 'fatJar'

I 运行 Windows 10 bash.exe 到 运行 bash 脚本。我面临一个有线的情况,如果我在 bash 中添加低于 gradle fatJar 的任何内容,它会引发错误。

Bash 脚本:(不工作)

#!/usr/bin/env bash
rm -rf build
gradle fatJar
echo 'Success'

' not found in root project 'project_name'. Some candidates are: 'fatJar'.

Bash 脚本:(工作中)

#!/usr/bin/env bash
rm -rf build
gradle fatJar

为什么我无法在 gradle fatJar 下面添加任何内容?这仅发生在 Windows 10 bash。在 mac 中,两者都工作正常。

我自己想出来了。希望这个回答能对某人有所帮助。

经过一番尝试后,我发现如果我使用 && 将所有内容写在一行中,一切正常,例如:rm -rf build&&gradle fatJar&&echo 'Success' 然后我意识到换行符有些问题。它正在添加 \r 到永远的换行符。

经过一番研究,我找到了原因。发生这种情况是因为我在 Mac IntelliJ 中提交了文件,后来我在 Windows IntelliJ 中编辑了文件,最后一次编辑将 bash 文件的行分隔符格式更改为 CRLF Windows (\r\n) 这是在每个换行符内部添加 \r

我将行分隔符更改为 LF UNIX and OS X (\n) 并且 boom 一切都按预期工作。

要在 IntelliJ 中更改行分隔符,请遵循 here and for others here