2017-11-24 34 views
6

Tôi có một dự án khá lớn (15+ tiểu dự án) có nhiều phụ thuộc bên ngoài. Khi tôi thay đổi ngay cả một dòng trong build.sbt và sau đó nhấn làm mới, IntelliJ tiếp tục giải quyết các phụ thuộc khác nhau trong một thời gian rất dài (30+ phút).SBT trên IntelliJ mất rất nhiều thời gian làm mới

Được cho là chậm? Sử dụng sbt từ dòng lệnh không mất quá 30 giây.

Tôi đang sử dụng -

Macbook pro mid 2015 with 16 GB ram 
IntelliJ IDEA Ultimate 2017.2.5 
sbt 0.13.13 
scala 2.11.11 
+1

Bạn đã "Tải nguồn SBT" tùy chọn vô hiệu hóa? Ngoài ra, bạn có thể thử bật tùy chọn "Sử dụng trình bao SBT để tạo và nhập". –

+0

"Tải xuống nguồn SBT" không được chọn. "Tải xuống nguồn thư viện" được chọn. Hey, SBT shell đã làm các trick. THANK YOU SO MUCH :-) – Kakaji

Trả lời

0

Tôi đã bật vỏ SBT bên trong IntelliJ theo đề xuất của @ y.bedrov và giờ làm mới nhanh bằng dòng lệnh!

Tùy chọn> Xây dựng, thực thi, triển khai> Công cụ xây dựng> SBT> chọn "Sử dụng trình bao SBT để tạo và nhập".

+0

FWIW, cho phép điều này làm cho bản dựng của tôi làm mới lâu hơn. Có lẽ (trong số những thứ khác) vì nó tải dự án hai lần, lúc bắt đầu và sau đó phát hành lệnh 'reload'. Xây dựng của tôi là khá lớn (50+ dự án), vì vậy, tôi đoán, bộ thực tế của một tối ưu hóa nên sử dụng phụ thuộc vào kích thước xây dựng. Dù sao, tuyệt vời nếu nó giúp bạn. – Haspemulator

1

Một điều có thể giúp được lưu trữ có độ phân giải phụ thuộc, mà là một thiết lập có sẵn bắt đầu từ SBT 0.13.7. Có một cái nhìn ở đây: http://www.scala-sbt.org/1.0/docs/Cached-Resolution.html, nhưng về cơ bản bạn cần phải kích hoạt các thiết lập sau cho tất cả các dự án trong xây dựng của bạn:

updateOptions := updateOptions.value.withCachedResolution(true) 

tôi đã có thể cắt giảm IntelliJ thời gian refresh dự án từ 15 phút đến 3 phút với điều này cài đặt. Vẫn không lý tưởng, nhưng cách dễ quản lý hơn.

Có một số cảnh báo vì đây là cài đặt thử nghiệm, chúng được mô tả trong trang đó. Về cơ bản, nếu bạn có phụ thuộc SNAPSHOT, cho phép điều này sẽ chỉ làm mọi thứ tồi tệ hơn, vì vậy hãy ý thức về điều đó.

+0

Cảm ơn bạn. Tôi đã kích hoạt vỏ SBT cho bây giờ và thời gian làm mới là xuống đến một vài phút. Tôi cũng sẽ thử độ phân giải đã lưu trong bộ nhớ cache và cập nhật tại đây nếu nó giúp ích nhiều hơn. – Kakaji

2

Câu trả lời của Kakaji và Haspemulator đã giúp tôi thực hiện việc nhập vào ~ 3 phút khi xây dựng ~ 40 dự án. Thêm vào đó tôi phát hiện ra rằng hầu hết thời gian trong nhập khẩu IntelliJ SBT đã được chi tiêu lấy phụ thuộc từ Ivy như là một phần của lệnh updateClassifiers.

Điều này xảy ra mỗi khi bạn thực hiện quá trình nhập nếu bạn đã bật hộp kiểm 'Nguồn thư viện' khi bạn nhập dự án. Tôi hy vọng nó sẽ chậm hơn nếu bạn cũng kiểm tra các nguồn 'sbt' bởi vì điều đó có nghĩa là nhiều thư viện hơn cần giải quyết.

Một cách để tăng tốc updateClassifiers là sử dụng coursier để phân giải phụ thuộc. Tôi vừa thêm dòng sau vào project/plugins.sbt và bây giờ nó sẽ import trong ~ 1 phút.

addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.1") 

Bạn có thể đọc thêm về updateClassifiers bị chậm tại https://github.com/sbt/sbt/issues/1930

Các vấn đề liên quan