Cách tốt nhất để thêm hỗ trợ Gradle cho Dự án IntelliJ


168

Tôi đã xem xét xung quanh khá nhiều và chưa tìm thấy giải pháp tốt nhất để chuyển đổi một dự án IntelliJ hiện có sang Gradle. Tôi làm việc trong môi trường nhóm và chúng tôi hiện chia sẻ tệp .ipr vì chúng tôi có một vài cấu hình xây dựng mà chúng tôi theo dõi. Cuối cùng chúng tôi sẽ loại bỏ những người ủng hộ Gradle nhưng tôi không thể làm hỏng mọi thứ quá nhiều cho đến khi việc chuyển đổi Gradle được thực hiện.

Ngoài ra, các tệp nguồn Java của chúng tôi được đặt trong thư mục gốc của thư mục src thay vì src / main / java như là tiêu chuẩn.

Có cách nào để tôi có thể thêm Gradle vào dự án của mình mà sẽ không khiến tôi xóa và tạo lại dự án IntelliJ của mình và sẽ không làm phiền mọi người khác khi họ thực hiện thao tác kéo Git không?


2
Để trả lời câu hỏi của thư mục nguồn của bạn - bạn cần ghi đè thư mục nguồn mặc định bằng sourceSets . Xem cách chúng tôi đã làm điều này trong trình điều khiển Java MongoDB: github.com/mongodb/mongo-java-do/blob/ Kẻ
Trisha

Câu trả lời:


208

Thêm vào:

build.gradle 

trong thư mục dự án gốc của bạn và sử dụng plugin chẳng hạn:

apply plugin: 'idea'
//and standard one
apply plugin: 'java'

và với lửa này từ dòng lệnh:

gradle cleanIdea 

và sau đó:

gradle idea

Sau đó mọi thứ sẽ hoạt động.


7
Khi thử giải pháp này, có ai gặp phải lỗi "Mô-đun 'xx' không được hỗ trợ bởi lớp không? nếu vậy nó đã được giải quyết như thế nào
Hầu tước Blount

Cảm ơn điều này đã khiến tôi phát điên và tôi không thể tìm ra cách làm cho IntelliJ làm mới các phụ thuộc của dự án sau khi thêm nó vào build.gradle.
Amala

ý tưởng gradle (phụ thuộc vào ideaProject, ideaModule, ideaWorkspace) không hoạt động với tôi vì ideaModule liên tục thất bại. Thay vào đó, ý tưởng lớp nhiệm vụ hoạt động tốt và dự án hiện được kích hoạt Gradle.
paranza

Được rồi, có một vấn đề với phương pháp này. Bạn sẽ nhận được một lỗi "phụ thuộc không thể được áp dụng cho Groovy.lang.clenses". Thay vào đó, hãy kiểm tra giải pháp này: stackoverflow.com/a/17168175/2517730
Yar

1
Điều này có phần lỗi thời, vì plugin Gradle vẫn dùng cho dự án ý tưởng dựa trên tệp, trong khi dự án dựa trên thư mục là tiêu chuẩn và tiện dụng hơn nhiều
Xerus

74

Không cần phải loại bỏ bất kỳ .imltập tin. Thực hiện theo điều này:

  • đóng dự án
  • File -> Open... và chọn bạn vừa tạo build.gradle
  • IntelliJ sẽ hỏi bạn có muốn không:
    • Open Existing Project
    • Delete Existing Project and Import
  • Chọn tùy chọn thứ hai và bạn đã hoàn tất

Làm thế nào tôi có thể khắc phục vấn đề, rằng dự án mới phải nằm trong một thư mục khác?
barracuda317

Điều này có thêm các JAR từ Cấu trúc dự án của bạn không | Các thư viện là phụ thuộc và tạo EAR (sử dụng plugin) như được định nghĩa trong Cấu trúc dự án | Hiện vật?
KHÔNG PHẢI

@NOTiFY Tôi nghi ngờ điều đó. Nó tương đương với việc kiểm tra dự án từ đầu.
Michal Kordas

@Michal Kordas Tôi đã thêm tất cả các phụ thuộc bằng tay, không mất bất cứ nơi nào gần thời gian tôi mong đợi và bây giờ thêm việc tạo WAR, JAR & EAR. Có một yêu cầu tính năng cho điều này tại JetBrains youtrack.jetbrains.com/su/IDEABKL-6990
NOTiFY

46

Một cách khác, đơn giản hơn.

Thêm của bạn

build.gradle

tập tin vào thư mục gốc của dự án của bạn. Đóng dự án. Xóa thủ công tệp * .iml. Sau đó chọn "Nhập dự án ...", điều hướng đến thư mục dự án của bạn, chọn tệp build.gradle và nhấp OK.


21

Trong IntelliJ 2017.2.4 tôi vừa đóng dự án và mở lại và tôi nhận được một hộp thoại hỏi tôi có muốn liên kết với build.gradle mở ra hộp thoại nhập cho các dự án Gradle không.

Không cần xóa bất kỳ tệp nào hoặc thêm plugin ý tưởng vào build.gradle .


2
Có thể xác nhận điều này hoạt động độc đáo. Chỉ cần chạy init init trong root dự án, sau đó bạn sẽ nhận được hộp thoại vào lần tới khi bạn mở dự án.
Alex H.

16

Cũng như một tài liệu tham khảo trong tương lai, nếu bạn đã có một Mavendự án, tất cả những gì bạn cần làm là thực hiện gradle inittrong thư mục dự án của bạn sẽ tạo ra build.gradlevà các phụ thuộc khác, sau đó thực hiện gradle buildtrong cùng một thư mục.


2
Quan tâm: Tạo Bản dựng Gradle mới - Ghi chú: gradle initcó thể tạo ra nhiều loại dự án khác nhau và thậm chí biết cách dịch pom.xmlcác tệp đơn giản sang Gradle.
Guy Coder

7

Tôi đang sử dụng Phiên bản 12 của IntelliJ.

Tôi đã giải quyết một vấn đề tương tự bằng cách tạo một dự án hoàn toàn mới và "Kiểm tra từ Kiểm soát phiên bản" Việc hợp nhất hai dự án sau đó khá dễ dàng.


1
  1. Thêm build.gradlevào thư mục gốc của dự án của bạn.

  2. Sau đó chỉ File->Invalidate Caches / Restart

Đây là một build.gradle cơ bản cho các dự án Java:

plugins {
    id 'java'
}

sourceCompatibility = '1.8'
targetCompatibility = '1.8'
version = '1.2.1'
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.