Java 找不到参数Gradle的方法compile()

Java 找不到参数Gradle的方法compile(),java,groovy,gradle,Java,Groovy,Gradle,这个解决方案已经找了很长时间了,我不确定我是否错过了它或者只是键入了一些错误,但是我的Gradle脚本将无法编译。我正在迁移到格拉德尔,对它很陌生。我非常习惯使用Maven进行依赖关系管理,但Gradle现在似乎是我最好的选择。从运行此代码片段: dependencies { compile group: 'org.bukkit', name: 'bukkit', version: '1.7.9-R0.1-SNAPSHOT' compile('io.ibj:MattLib:1.1-SNA

这个解决方案已经找了很长时间了,我不确定我是否错过了它或者只是键入了一些错误,但是我的Gradle脚本将无法编译。我正在迁移到格拉德尔,对它很陌生。我非常习惯使用Maven进行依赖关系管理,但Gradle现在似乎是我最好的选择。从运行此代码片段:

dependencies {
  compile group: 'org.bukkit', name: 'bukkit', version: '1.7.9-R0.1-SNAPSHOT'
  compile('io.ibj:MattLib:1.1-SNAPSHOT') {
    exclude group: 'de.bananaco'
    exclude 'net.milkbowl:vault:1.2.27'
  }
  compile group: 'net.citizensnpcs', name: 'citizens', version: '2.0.12'
  compile group: 'com.sk89q', name: 'worldedit', version: '5.6.1'
  compile group: 'com.sk89q', name: 'worldguard', version: '5.9'
  compile group: 'net.milkbowl', name: 'vault', version: '1.2.12'
  compile fileTree(dir: 'libs', includes: ['*.jar'])
}
注意:我确实应用了java、maven、nexus、shadow和rebel插件

运行Gradle任务时,我遇到以下错误:

Could not find method compile() for arguments [[io.ibj:MattLib:1.1-SNAPSHOT], build_1b5iofu9r9krp7o8mme0dqo9l$_run_closure2_closure8@66fb45e5] on root project 'project'
如果我从项目中删除“MattLib”依赖项并将其作为

compile 'io.ibj:MattLib:1.1-SNAPSHOT'
脚本已完成,但存在依赖关系问题。我在这里读到:

dependencies {
  compile("org.gradle.test.excludes:api:1.0") {
    exclude module: 'shared'
  }
}
(摘自Gradle手册第50章)

我所拥有的应该有用,但我不明白为什么不行

gradle--版本输出:

Groovy:       1.8.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
Ivy:          2.2.0
JVM:          1.8.0_05 (Oracle Corporation 25.5-b02)
OS:           Windows 7 6.1 amd64

有什么想法吗?

应该是
排除模块:'net.milkbowl:vault:1.2.27'
(添加
模块:
),如
DependencyHandler
链接的文档中所述,因为
模块依赖.exclude(java.util.Map)使用了
方法。

编译
是一种通常由插件(很可能是java插件)引入的配置。有关配置的详细信息,请参阅gradle用户指南。现在,在构建脚本之上添加java插件应该可以做到以下几点:

apply plugin:'java'

确保您正在编辑正确的
build.gradle
文件。我在编辑
android/build.gradle
而不是
android/app/build.gradle
时收到此错误,希望下面的步骤能有所帮助

将依赖项添加到项目级别build.gradle:

classpath 'com.google.gms:google-services:3.0.0'
apply plugin: 'com.google.gms.google-services'
dependencies {
        compile 'com.google.android.gms:play-services-auth:9.8.0'
}
将插件添加到你的应用程序级别build.gradle:

classpath 'com.google.gms:google-services:3.0.0'
apply plugin: 'com.google.gms.google-services'
dependencies {
        compile 'com.google.android.gms:play-services-auth:9.8.0'
}
应用程序级别build.gradle:

classpath 'com.google.gms:google-services:3.0.0'
apply plugin: 'com.google.gms.google-services'
dependencies {
        compile 'com.google.android.gms:play-services-auth:9.8.0'
}

在我的例子中,所有
compile
语句都以某种方式排列在一行中。将它们分隔成单独的行解决了这个问题。

错误的渐变文件。正确的是你的“应用”文件夹中的build.gradle。

在我的情况下,我不得不删除gradle在我研究的某个时候创建的一些文件,以使事情顺利进行。所以,在混乱之后清理,然后它运行良好

如果在git项目中遇到此问题,请执行
git status
并删除未释放的文件。(对我来说,
elasticsearch
插件/分析icu
方面有问题)


Gradle版本
:5.1.1

只是为了记录:我意外地在“首选项”->“构建、执行、部署”->“Gradle->取消选中“脱机工作”下启用了脱机工作,
编译
运行时
测试编译
,Java插件引入的
testRuntime
配置自()起就被弃用,并最终在()中被删除


上述配置应分别替换为
实现
运行时仅
测试实现
测试运行时仅

在我的情况下,问题是gradle版本不匹配。我已经在mac上安装了gradle,使用

brew install gradle
并获得了最新的7.0级成绩

然而,当我通过ProjectRepo克隆并执行gradle taks时,它失败了,错误如下

* What went wrong:
A problem occurred evaluating root project 'digital-engineering-course'.
> Could not find method compile() for arguments [org.springframework.boot:spring-boot-starter-web, build_bzpgd6h32w4m8umtmgs76ewog$_run_closure3$_closure8@b55ca3] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
build.gradle文件对我来说很正常,因为它有规则的依赖关系

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web") {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    } 
    compile("org.springframework.boot:spring-boot-starter-data-mongodb")    
我花了一段时间才明白问题在于版本不匹配。Gradle无法找到compile()方法,因为我在bash中使用了Gradle 7.0

该项目应该使用gradle 4.8运行(实际上使用的是gradle包装器,但另一个有趣的问题是,
无法找到或加载主类org.gradle.wrapper.GradleWrapperMain
(如有兴趣,请关注详情)

失败的原因是编译,因为Java插件引入的编译运行时测试编译测试运行时配置从Gradle 4.10开始就被弃用,并最终在Gradle 7.0中被删除

因此,为了解决这个问题,我必须安装较低版本的gradle。如果您想管理多个版本的gradle,请使用(以前称为gvm)

在macOs/linux上的安装非常简单,如下所示

curl -s "https://get.sdkman.io" | bash
一旦完成使用

sdk list gradle
它将列出gradle的所有可用版本。根据您的需要安装和使用

sdk安装gradle 4.8
(在当前shell中,默认情况下,这将选择4.8)
sdk使用gradle 4.8
(如果已经安装,这足以在gradle版本之间切换)


现在build.gradle能够编译并执行任务。

你有没有发现这个问题?我有完全相同的问题。论坛上有人建议将exclude放在编译块中,但每当我尝试这样做时,我都会得到这个确切的错误。这个定义的顺序似乎对构建有影响;在在我的案例中,我遇到了jar()标记的问题,Rene的注释帮助我解决了这个问题。在与kotlin一起工作时,必须应用kotlin插件
apply插件:“kotlin”
我的语法糖是plugins{id'java'}我也把它放错地方了。谢谢你帮我!你说的地方错了是什么意思?应该编辑哪个gradle文件?@guru_001你应该编辑android/app/build.gradleexcellent。对我和其他gradle新手来说非常有帮助。为什么F…。他们给它起的名字是一样的?这在android Studio上一直发生在我身上!是的,如果我们修改gr模块设置对话框中的adle属性发生了。该死的gradle.build文件生成器在一些操作后删除依赖项块中的换行分隔符。哦,真的吗?来吧,谷歌真是个错误,当我醒来并点击运行按钮时,它删除了我所有的新行!这真是个狗屎人。这是什么