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


95

现在,寻找这种解决方案的时间已经太久了,我不确定是错过了还是只是输错了什么,但是我的Gradle脚本无法编译。我正在迁移到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章,http://www.gradle.org/docs/current/userguide/dependency_management.html

我应该工作的东西,但我很困惑为什么没有。

gradle --version输出:

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

有什么想法吗?


你有没有解决这个问题?我有完全一样的问题。讨论论坛上的某人建议将exclude放在编译块中,但是每当我尝试这样做时,都会出现此确切错误。
Trejkaz

Answers:


7

它应该是exclude module: 'net.milkbowl:vault:1.2.27'(ADD module:)为文档解释了DependencyHandler来自链接http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure)因为ModuleDependency.exclude(java.util.Map)方法是用过的。


回顾这段时间,这是我最有可能遇到的问题。自那以来,我显然已经走了很长的路,但是在收到有关该问题仍未解决的通知后,我认为将其表示为“正确”答案是适当的,因为它似乎是最接近的。
Ichbinjoe

167

确保您正在编辑正确的build.gradle文件。我在编辑android/build.gradle而不是时收到此错误android/app/build.gradle


7
我也把它放在错误的地方。谢谢你的协助!
igorrmotta

3
你是什​​么意思呢?应该编辑哪个gradle文件?
guru_001

@ guru_001您应该编辑android / app / build.gradle
Sreekanth Karumanaghat

1
优秀的。对我和其他新手很有帮助。
CowZow

1
为什么F ..他们用同样的名字命名?
Developerium

103

compileconfiguration通常由插件(最有可能是Java插件)引入的。查看gradle用户指南,了解有关配置的详细信息。现在,在构建脚本之上添加java插件应该可以解决问题:

apply plugin:'java'

该定义的顺序似乎对构建有影响;就我而言,我遇到了jar()标记问题,而Rene的笔记帮助我解决了问题。
vsrikarunyan '16

在与kotlin一起工作时,必须应用kotlin插件apply plugin: "kotlin"
祈祷

我的语法糖是插件{
id'java

8

就我而言,所有compile语句都以某种方式排列在一行中。将它们分成几行可以解决此问题。


这在Android Studio上一直在发生!
Brett

是的,如果我们从模块设置对话框中修改gradle属性,则会发生
Ranjith Kumar,

真正。该死的gradle.build文件生成器在进行一些操作后会删除依赖关系块中的换行符。
马库斯·马维尔

真的吗?来Google上,这真是个错误,当我醒来并点击运行按钮时,它删除了我所有的新行!这是一个真正的狗屎男人..
PRATIK Jamariya

7

希望以下步骤会有所帮助

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

classpath 'com.google.gms:google-services:3.0.0'

将插件添加到您的应用程序级别的 build.gradle中:

apply plugin: 'com.google.gms.google-services'

应用程序级 build.gradle:

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

1
这与问题有什么关系?
aarnaut

0

gradle文件错误。正确的是您的“ app”文件夹中的build.gradle。


0

就我而言,我必须删除gradle在研究中的某个时刻创建的一些文件才能使工作正常。因此,弄乱后清理干净,然后运行良好...

如果您在git项目中遇到此问题,请执行git status并删除未修订的文件。(对我来说elasticsearchplugins/analysis-icu)。

Gradle Version :5.1.1


0

只是为了记录:我不小心启用脱机工作下的首选项- >构建,执行,部署- >摇篮- >取消选中脱机工作,但错误信息被误导

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.