2015-06-30 15 views
16

Tôi không phải là chuyên gia với sbt vì vậy có lẽ câu hỏi của tôi hơi noob, nhưng tôi đã chú ý hơn khi tạo dự án và tải xuống các phụ thuộc của nó với sbt , nếu tôi mở dự án bằng intellij, tất cả các phụ thuộc sẽ được tải xuống lại một lần nữa, điều tương tự cũng xảy ra trong orber intellij-> sbt nghịch đảo và cũng là trình kích hoạt.intellij/activator/sbt đang tải xuống các phần phụ thuộc đã được tải xuống trước đó bởi

kiến ​​thức (nghèo) của tôi về sbt hơn ivy sử dụng này và phụ thuộc được tải xuống trong ~/.ivy2/thư mục ... đó là nơi sbt đang tải xuống deps của tôi, nhưng có vẻ như intellij đang sử dụng thư mục khác.

Cá nhân tôi không sử dụng quá nhiều chất kích hoạt, nhưng tôi muốn cấu hình SBT và IntelliJ để sử dụng con đường ivy cùng ...

2) Gần đây tôi đã xuất bản finagle-postgre để ivy địa phương của tôi sử dụng SBT + publishLocal, tôi có thể kiểm tra trong thư mục ivy tôi

/home/yo/.ivy2/local/com.twitter/finagle-postgres_2.11/0.1.0-SNAPSHOT 

nhưng tiếc là IntelliJ là không thể giải quyết sự phụ thuộc này, tôi thử thêm dòng này để xây dựng của tôi

resolvers += Resolver.file("Local", file(Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns) 

nhưng dường như không có t hoạt động

3) đường dẫn tải xuống phụ thuộc có liên quan đến tệp sbt-launch.jar nào được sử dụng? Làm cách nào để biết tệp sbt-lauch.jar đang sử dụng sbt nào ngay bây giờ ...

thanks guys!

+0

Bạn có thể thiết lập các đường dẫn đến repo ivy địa phương của bạn dưới một dự án địa phương '.sbtopts' tập tin ... Giá trị mặc định là '~ /. ivy2' nhưng nếu bạn đặt nó thành '~/.ivy2/local', bạn sẽ cần phải cập nhật điều đó cho bản dựng của bạn ~ [Xem mặc định] (https://github.com/sbt/sbt-launcher-package/blob/master/src/universal/conf/sbtopts # L-22-24) –

Trả lời

2

Đầu tiên, trình kích hoạt chỉ là một trình khởi chạy cho chính SBT, vì vậy sẽ không có sự khác biệt về hành vi.

Thứ hai, IntelliJ cũng sử dụng các tệp trong ~/.ivy2 theo mặc định nếu bạn không nói khác (bằng cách đặt biến môi trường SBT_OPTS chẳng hạn, nhưng phụ thuộc vào phiên bản IntelliJ của bạn).

Sự khác biệt có thể xảy ra nếu bạn đang sử dụng các phiên bản scala khác nhau (ví dụ: 2.10.x so với 2.11.x) khi bạn không đặt scalaVersion trong dự án của mình một cách rõ ràng. Sau đó, mỗi công cụ sẽ tải xuống các thư viện tương ứng cho phiên bản scala thích hợp mà nó đã định cấu hình theo mặc định.

Một điều nữa là IntelliJ sẽ tải xuống các nguồn và javadoc lọ cho mỗi phụ thuộc nếu bạn đã bật tính năng này trong cài đặt của mình có thể sẽ tải xuống lại các phụ thuộc.

Lưu ý, tôi cực kỳ đoán ở đây vì bạn chưa bao gồm bất kỳ đầu ra nào của chương trình bạn đang sử dụng, vì vậy thật khó để nói vấn đề thực sự là gì.

5

Nếu chúng ta đang nói về IntelliJ xuất hiện để tải xuống các đồ tạo tác sau khi chúng đã được SBT/Activator tải xuống, thì có thể chỉ là IntelliJ đang tải xuống các nguồn - nó không tải xuống các tạo phẩm nhị phân , chỉ là những hiện vật nguồn đi cùng chúng.

Đây không phải là rõ ràng hơn khi bạn đang nhìn vào Refreshing SBT project nhiệm vụ trong Background Tasks popup, bởi vì con đường tải đầy đủ là cắt ngắn, vì vậy bạn nhìn thấy một cái gì đó như thế này:

[info] downloading https://repo1.maven.org/maven2/org/apache/httpcompo... 

..Bạn có thể thấy rằng đây là cùng một giả tạo nhị phân bạn đã thấy SBT tải xuống trên bảng điều khiển, nhưng bạn có thể xem toàn bộ câu chuyện nếu bạn kiểm tra toàn bộ nhật ký (đi Help ->Show Log in files và mở sbt.last.log trong trình duyệt tệp).

Bạn sẽ thấy rằng các hiện vật chỉ việc tải về cuối với -sources.jar:

$ grep repo1.maven.org /home/roberto/.IntelliJIdea2016.3/system/log/sbt.last.log 
[info] downloading https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6-sources.jar ... 
[info] downloading https://repo1.maven.org/maven2/com/googlecode/javaewah/JavaEWAH/0.7.9/JavaEWAH-0.7.9-sources.jar ... 
[info] downloading https://repo1.maven.org/maven2/org/pegdown/pegdown/1.2.1/pegdown-1.2.1-sources.jar ... 
[info] downloading https://repo1.maven.org/maven2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3-sources.jar ... 

`` `

Nếu bạn không có hộp kiểm Sources kiểm tra khi bạn đang làm Import project, những tải xuống nguồn sẽ không xảy ra.

thử nghiệm sử dụng IntelliJ 2016/03/05 và Scala cắm v2016.3.9

+0

+1; điều này phù hợp với kinh nghiệm của tôi. IntelliJ và SBT chia sẻ một bộ nhớ cache deps trên máy tính của tôi, nhưng SBT không lấy nguồn theo mặc định trong khi IntelliJ làm cho tôi. – Rich

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