Không thể tìm thấy phương thức compile () cho các đối số Gradle


95

Đã tìm kiếm giải pháp này quá lâu và tôi không chắc liệu mình có bỏ sót nó hay chỉ nhập sai điều gì đó, nhưng tập lệnh Gradle của tôi sẽ không biên dịch. Tôi đang di chuyển sang Gradle và rất mới với nó. Tôi đã rất quen với việc sử dụng Maven để quản lý sự phụ thuộc, nhưng Gradle có vẻ phù hợp nhất với tôi lúc này. Từ việc chạy đoạn mã này:

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

LƯU Ý: Tôi đã áp dụng các plugin java, maven, nexus, shadow và Rebel.

Khi tôi chạy tác vụ Gradle của mình, tôi gặp lỗi này:

Could not find method compile() for arguments [[io.ibj:MattLib:1.1-SNAPSHOT], build_1b5iofu9r9krp7o8mme0dqo9l$_run_closure2_closure8@66fb45e5] on root project 'project'

Nếu tôi xóa phần phụ thuộc "MattLib" khỏi dự án của mình và lắp lại nó như

compile 'io.ibj:MattLib:1.1-SNAPSHOT'

Kịch bản đã hoàn thành, nhưng tôi có vấn đề về phụ thuộc. Tôi đọc đến đây:

dependencies {
  compile("org.gradle.test.excludes:api:1.0") {
    exclude module: 'shared'
  }
}

(Từ Chương 50 Từ Sổ tay Gradle, http://www.gradle.org/docs/current/userguide/dependency_management.html )

rằng những gì tôi có NÊN hoạt động, nhưng tôi bối rối tại sao nó không.

gradle - đầu ra chuyển đổi:

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

Có suy nghĩ gì không?


Bạn đã bao giờ con số này ra? Tôi có vấn đề chính xác như nhau. Một người nào đó trên diễn đàn thảo luận đã khuyến nghị đặt loại trừ bên trong khối biên dịch, nhưng bất cứ khi nào tôi cố gắng làm như vậy, tôi đều gặp lỗi chính xác này.
Trejkaz

Câu trả lời:


7

Nó phải là exclude module: 'net.milkbowl:vault:1.2.27'(thêm module:) như được giải thích trong tài liệu DependencyHandlerđược liên kết từ http://www.gradle.org/docs/current/javadoc/org/gradle/api/Project.html#dependencies(groovy.lang.Closure)ModuleDependency.exclude(java.util.Map)phương thức là đã sử dụng.


Nhìn lại suốt thời gian qua, đây là vấn đề rất có thể tôi đang gặp phải. Rõ ràng là tôi đã tiến rất xa, nhưng sau khi nhận được thông báo rằng câu hỏi này vẫn còn mở, tôi nghĩ cách duy nhất để chỉ ra đây là câu trả lời 'đúng', vì nó có vẻ là câu trả lời gần nhất.
Ichbinjoe

167

Đảm bảo rằng bạn đang chỉnh sửa build.gradletệp chính xác . Tôi đã nhận được lỗi này khi chỉnh sửa android/build.gradlehơn là android/app/build.gradle.


7
Tôi cũng đã đặt nó sai chỗ. Cảm ơn vì đã giúp tôi ra ngoài!
igorrmotta

3
bạn có nghĩa là sai chỗ? tập tin gradle nào tôi phải chỉnh sửa?
guru_001

@ guru_001 Bạn phải chỉnh sửa android / app / build.gradle
Sreekanth Karumanaghat 25/09/17

1
thông minh. rất hữu ích cho tôi và những người mới học gradle.
CowZow

1
Tại sao F .. họ lại đặt tên giống nhau ??
Developerium

103

compilelà một configurationplugin thường được giới thiệu bởi một plugin (rất có thể là plugin java) Hãy xem hướng dẫn người dùng gradle để biết chi tiết về cấu hình. Bây giờ, việc thêm plugin java vào đầu tập lệnh xây dựng của bạn sẽ thực hiện thủ thuật:

apply plugin:'java'

thứ tự mà định nghĩa này đi dường như có tác động đến việc xây dựng; trong trường hợp của tôi, tôi gặp phải vấn đề với thẻ jar () và ghi chú của Rene đã giúp tôi giải quyết vấn đề.
vsrikarunyan,

trong khi làm việc với kotlin, phải áp dụng plugin apply plugin: "kotlin"
kotlin

Cú pháp đường của tôi là plugin {id 'java'}
granadaCoder

8

Trong trường hợp của tôi, tất cả các compilecâu lệnh đã được sắp xếp theo cách nào đó trong một dòng duy nhất. tách chúng thành từng dòng riêng lẻ đã khắc phục sự cố.


Điều này liên tục xảy ra với tôi trên Android Studio!
Brett

vâng nếu chúng ta sửa đổi các thuộc tính gradle từ cài đặt môđun thoại cho nó xảy ra
Ranjith Kumar

Thật. Trình tạo tệp gradle.build chết tiệt loại bỏ dấu phân cách dòng mới trong khối phụ thuộc sau một số thao tác.
Markus Marvell

ồ vậy hả? Đến trên google thật là một lỗi, nó đã xóa tất cả các dòng mới của tôi khi tôi thức dậy và nhấn nút chạy! đây thực sự là một người đàn ông chết tiệt ..
Pratik Jamariya

7

Hy vọng các bước dưới đây sẽ giúp

Thêm phần phụ thuộc vào build.gradle cấp dự án của bạn :

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

Thêm plugin vào build.gradle cấp ứng dụng của bạn :

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

app-level build.gradle:

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

1
Điều này có liên quan gì đến câu hỏi?
aarnaut

0

Tệp gradle sai. Cái phù hợp là build.gradle trong thư mục 'ứng dụng' của bạn.


0

Trong trường hợp của tôi, tôi đã phải xóa một số tệp được tạo bởi gradle tại một số thời điểm trong nghiên cứu của mình để mọi thứ hoạt động. Vì vậy, dọn dẹp sau khi lộn xộn và sau đó nó chạy tốt ...

Nếu bạn gặp sự cố này trong một dự án git, hãy thực hiện git statusvà xóa các tệp chưa được cấp phép. (Đối với tôi elasticsearchđã có một vấn đề với plugins/analysis-icu).

Gradle Version : 5.1.1


0

Chỉ cho bản ghi: Tôi đã vô tình kích hoạt Công việc ngoại tuyến trong Tùy chọn -> Xây dựng, Thực thi, Triển khai -> Gradle -> bỏ chọn Công việc Ngoại tuyến , nhưng thông báo lỗi đã gây hiểu lầm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.