ไม่พบ method compile () สำหรับอาร์กิวเมนต์ Gradle


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'
  }
}

(จากบทที่ 50 จากคู่มือ Gradle http://www.gradle.org/docs/current/userguide/dependency_management.html )

สิ่งที่ฉันมีควรได้ผล แต่ฉันก็งงว่าทำไมมันถึงไม่ได้ผล

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

ความคิดใด ๆ ?


1
คุณเคยคิดออกไหม? ฉันมีปัญหาเดียวกันแน่นอน มีคนในฟอรัมสนทนาแนะนำให้ยกเว้นในบล็อกคอมไพล์ แต่เมื่อใดก็ตามที่ฉันพยายามทำเช่นนั้นฉันได้รับข้อผิดพลาดนี้
Trejkaz

คำตอบ:


7

ควรเป็นexclude module: 'net.milkbowl:vault:1.2.27'(เพิ่มmodule:) ตามที่อธิบายไว้ในเอกสารสำหรับการDependencyHandlerเชื่อมโยงจากhttp://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure)เนื่องจากModuleDependency.exclude(java.util.Map)วิธีการคือ ใช้แล้ว


เมื่อมองย้อนกลับไปตลอดเวลานี่เป็นปัญหาที่ฉันพบมากที่สุด เห็นได้ชัดว่าฉันก้าวไปไกลมากแล้ว แต่หลังจากได้รับการแจ้งเตือนว่าคำถามนี้ยังคงเปิดอยู่ฉันคิดว่ามันเป็นสิ่งเดียวที่เหมาะสมที่จะระบุว่านี่เป็นคำตอบที่ 'ถูกต้อง' เพราะดูเหมือนจะใกล้เคียงที่สุด
Ichbinjoe

170

ตรวจสอบให้แน่ใจว่าคุณกำลังแก้ไขbuild.gradleไฟล์ที่ถูกต้อง ผมได้รับข้อผิดพลาดนี้เมื่อมีการแก้ไขมากกว่าandroid/build.gradleandroid/app/build.gradle


7
ฉันมีมันผิดที่เกินไป ขอบคุณที่ช่วยฉัน!
igorrmotta

3
คุณหมายถึงสถานที่ผิดหรือไม่ไฟล์ gradle ใดที่ควรแก้ไข
guru_001

@ guru_001 คุณควรจะแก้ไข android / app / build.gradle
Sreekanth Karumanaghat

1
ยอดเยี่ยม. มีประโยชน์มากสำหรับฉันและคนอื่น ๆ ที่เพิ่งเริ่มเรียน
CowZow

1
ทำไม F .. ถึงตั้งชื่อเหมือนกัน ??
Developerium

107

compileเป็นconfigurationปลั๊กอินที่มักจะนำมาใช้ (ส่วนใหญ่จะเป็นปลั๊กอิน java) ดูที่คู่มือผู้ใช้ gradle เพื่อดูรายละเอียดเกี่ยวกับการกำหนดค่า ในตอนนี้การเพิ่มปลั๊กอิน java ที่ด้านบนของสคริปต์การสร้างของคุณควรทำเคล็ดลับ:

apply plugin:'java'

ลำดับที่คำจำกัดความนี้ไปดูเหมือนจะมีผลกระทบต่อการสร้าง ในกรณีของฉันฉันประสบปัญหากับแท็ก jar () และบันทึกของ Rene ช่วยฉันแก้ไขปัญหา
vsrikarunyan

ในขณะที่ทำงานกับ kotlin ต้องใช้ปลั๊กอินapply plugin: "kotlin"
kotlin

น้ำตาลไวยากรณ์ของฉันคือปลั๊กอิน {id 'java'}
granadaCoder

8

ในกรณีของฉันข้อความทั้งหมดcompileได้จัดเรียงเป็นบรรทัดเดียว การแยกออกเป็นแต่ละบรรทัดช่วยแก้ปัญหาได้


สิ่งนี้ยังคงเกิดขึ้นกับฉันใน Android Studio!
Brett

ใช่ถ้าเราแก้ไขคุณสมบัติ gradle จากกล่องโต้ตอบการตั้งค่าโมดูลมันจะเกิดขึ้น
Ranjith Kumar

จริง. Damn gradle.build file generator ลบตัวคั่นขึ้นบรรทัดใหม่ในบล็อกการอ้างอิงหลังจากการปรับเปลี่ยน
Markus Marvell

จริงๆเหรอ? มาใน 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 ในบางจุดในการศึกษาของฉันเพื่อให้สิ่งต่างๆทำงานได้ ดังนั้นการทำความสะอาดหลังจากทำเลอะแล้วก็ทำงานได้ดี ...

หากคุณประสบปัญหานี้ในโปรเจ็กต์ git ให้ทำgit statusและลบไฟล์ที่ไม่ได้จัดเตรียม (สำหรับฉันelasticsearchมีปัญหากับplugins/analysis-icu)

Gradle Version : 5.1.1


0

สำหรับบันทึก: ฉันเปิดใช้งานออฟไลน์โดยไม่ได้ตั้งใจภายใต้การตั้งค่า -> สร้างการดำเนินการการปรับใช้ -> Gradle -> ยกเลิกการเลือกงานออฟไลน์แต่ข้อความแสดงข้อผิดพลาดทำให้เข้าใจผิด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.