使用 Git 将项目的
gradlew
文件从 Windows 计算机提交到远程存储库后,在 Linux 服务器上调用 gradlew
失败,并显示以下消息:
/usr/bin/env: bash: 没有这样的文件或目录
发生什么事了?
问题的原因是 Windows 上的 Git 将
gradlew
的行结尾从 Unix 样式 (LF) 转换为 Windows 样式 (CRLF)。
您可以使用
git config core.autocrlf false
关闭自动转换。
将
gradlew
的行结尾设置回 Unix 样式解决了该问题。在 Vim 中,这是使用 :set fileformat=unix
完成的。
这是因为 gradlew 文件具有 Windows 文件结尾。
您可以通过运行
dos2unix
或 apt-get
安装 yum
:
sudo apt-get install dos2unix
sudo yum install -y dos2unix
然后使用
dos2unix
转换行尾
来自
CRLF
Windows 回车+换行
到
LF
仅 Linux 换行:
dos2unix ./gradlew
然后运行您的
gradlew
进行测试:
./gradlew clean -d
感谢您的回答,这些问题强调了当我在 mac 上时,问题是 Windows 创建 gradlew。
为了解决这个问题,我从应用程序的目录中运行了命令:
gradle wrapper
这将创建(替换损坏的)一个 gradle 包装器,它可以工作! (请注意,它使用您本地的
gradle
安装来修复应用程序的包装)
要永久解决 Linux 和 Mac 上的 Git 签出问题:
在 Git 存储库根目录中添加一个名为
.gitattributes
的文件,其中包含以下内容:
gradlew text eol=lf
更多信息:https://git-scm.com/docs/gitattributes
PS:使用此条目也适用于
.sh
文件:
*.sh text eol=lf
这些条目在结账时起作用,并将这些文件的行结尾转换为
LF
。
供应商发送了带有 Windows 回车符的
gradlew
。在 vim 中打开 gradlew
显示 ^M
行结尾。运行 :e ++ff=dos
删除了行结尾并解决了此问题。