我通过删除~/这样的本地目录来清理整个项目。gradle ~ /。m2 ~。~/workspace/project/。gradle和选择文件-> Invalidate Caches / Restart…在Android Studio。
现在执行./gradlew命令会得到以下输出:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
不用说,我删掉的太多了,问题是怎样才能重新修复呢?你有什么解决办法吗?
在我的例子中,它是一个全局的。gitignore,正如@HankCa的回答所解释的那样。
我没有在每个Gradle项目中强制添加jar,而是在全局的.gitignore中重新包含了包装器jar:
*.jar
!gradle/wrapper/gradle-wrapper.jar
这对我来说很有用,因为我有很多使用Gradle的项目;Git现在会提醒我包含包装器jar。
只要gradle-wrapper.jar上面的目录(比如gradle和wrapper)没有被忽略,这个重写就可以工作——出于性能原因,git不会进入被忽略的目录。
问题陈述很简单,它无法定位可执行的主类文件。
如果你在你的项目中使用gradle包装器,你应该有如下结构
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
当你执行。/gradlew时,它会寻找类路径,根据gradlew或gradlew.bat中的代码,有一行将gradle-wrapper.jar添加到类路径中
CLASSPATH = $ APP_HOME gradle wrapper / gradle-wrapper.jar
在我的例子中,在。gitignore as *.jar中有一个条目,当第一次提交时,它也排除了gradle-wrapper。jar。
因此,要恢复文件,您必须执行以下任务
gradle wrapper
如果你没有使用最新的gradle版本,那么你必须在构建中有一个包装任务。Gradle如下图。这定义了哪个gradle版本将被捆绑在包装器中。对于最新版本的gradle,包装器任务是隐式的。
task wrapper(type: Wrapper) {
gradleVersion = '4.8'
//change this as per your project. Refer to distributionUrl in gradle-wrapper.properties to confirm the version
}
一旦你执行了这个任务,gradle-wrapper-4.8.jar将被下载并放到gradle/wrapper文件夹中(如上树形结构所述)。将文件重命名为gradle-wrapper.jar
然而,由于*.jar被排除在。gitignore文件,我仍然无法签入它存储在github。
因此,在.gitignore文件中添加以下一行,将gradle-wrapper.jar从被忽略的jar列表中排除,因为*.jar。
!gradle-wrapper.jar
Git实际上已经为所有编程语言共享了示例.gitignore文件。
请参考gradle和java
https://github.com/github/gitignore/blob/master/Gradle.gitignore
https://github.com/github/gitignore/blob/master/Java.gitignore