Làm cách nào để tạo dự án SBT với IntelliJ Idea?


146

Tôi mới bắt đầu với Scala / LiftWeb / Sbt đang phát triển và tôi muốn nhập một dự án Sbt trong IntelliJ Idea. Trên thực tế, tôi đã quản lý để nhập dự án của mình theo hai cách khác nhau:

1) với Maven. Tôi đã tạo một dự án Maven và trên hết tôi đã tạo một dự án Sbt, sau đó tôi đã nhập vào IntelliJ. Sau đó tôi có thể dễ dàng khởi động, dừng máy chủ cầu cảng và làm những việc khác. Nhưng đó không phải là điều tôi muốn. Tôi muốn làm những thứ tương tự, chỉ cần Maven miễn phí. Điều đó dẫn tôi đến

2) với Eclipse. Vì vậy, tôi đã tạo một dự án Sbt mới (với một đoạn script nhỏ tôi đã viết, cấu hình dự án Sbt thành WebProject). Sau đó, tôi đã sử dụng plugin sbt-eclipsify để 'chuyển đổi' dự án cho Eclipse, sau đó tôi đã nhập vào IntelliJ (nguồn hiện có -> nhật thực). Nhưng vấn đề bắt đầu từ đây: Tôi không thể làm cho plugin IntelliJ Sbt hoạt động.

Bất cứ ai có thể giúp tôi với điều này?


Đối với ai đó cần một câu trả lời nhanh hoặc nếu yêu cầu khẩn cấp của nó, chỉ cần truy cập github và tìm một dự án scala đơn giản. Tải về và sau đó nhập vào IDE của bạn. Bạn sẽ có thể truy cập vào dự án scala. Thời gian vui vẻ
Một người dùng

Câu trả lời:


170

Có ba cách cơ bản để tạo dự án - các phiên bản hiện đại của IntelliJ có thể nhập dự án sbt ra khỏi hộp, nếu không, bạn có thể sử dụng plugin sbt để tạo dự án IntelliJ hoặc sử dụng plugin IntelliJ Scala để tạo dự án sbt. Các tính năng cơ bản hoạt động tốt khi sử dụng cả hai giải pháp, một số bản dựng phức tạp có thể có vấn đề, vì vậy hãy thử các công cụ khác để xem nó có hoạt động ở đó không.

IntelliJ

IntelliJ IDEA đã trở nên tốt hơn rất nhiều những ngày này. Phiên bản hiện tại (14.0.2) hỗ trợ các dự án sbt ra khỏi hộp với plugin Scala. Chỉ cần cài đặt plugin và bạn sẽ có thể mở các dự án Scala / sbt mà không gặp rắc rối.

Plugin Scala trong Plugins in Preferences

Với plugin, chỉ cần trỏ vào một dự án sbt và IDEA sẽ cung cấp cho bạn một trình hướng dẫn để mở loại dự án đó.

Dự án nhập khẩu sbt

Plugin IntelliJ Scala

Có thể tìm thấy plugin IntelliJ tại đây http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA hoặc có thể được cài đặt directoly từ trong IDE bằng cách sử dụng hộp thoại Cài đặt -> Plugins. Sau đó, người ta chỉ có thể thực hiện Tệp -> Dự án mới -> Scala -> dựa trên SBT. IntelliJ sẽ tạo build.sbt cơ bản, tải xuống các phụ thuộc cần thiết và dự án mở.

Plugin SBT

Plugin Sbt tạo dự án ý tưởng dựa trên các tệp sbt có thể được tìm thấy ở đây: https://github.com/mpeltonen/sbt-idea

SBT 12.0+ & 13.0+

Đơn giản chỉ cần thêm addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")vào của bạn build.sbt; không cần thêm bộ giải quyết.

Các phiên bản cũ hơn:

SBT 0,11+

Tạo và thêm các dòng sau vào ~/.sbt/plugins/build.sbtORPROJECT_DIR/project/plugins.sbt

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

Sử dụng gen-ideatrong sbt để tạo tệp dự án IDEA.

Theo mặc định, các trình phân loại (tức là nguồn và javadocs) của phụ thuộc thư viện và thư viện được tải nếu được tìm thấy và các tham chiếu được thêm vào tệp dự án IDEA. Nếu bạn không muốn tải xuống / tham khảo chúng, hãy sử dụng lệnh gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (theo tác giả plugin, 0.10.0 sẽ không hoạt động!)

Tạo và thêm các dòng sau vào ~ / .sbt / plugins / build.sbt:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"

Sử dụng gen-ideatác vụ sbt để tạo tệp dự án IDEA.

Theo mặc định, các trình phân loại (tức là nguồn và javadocs) của phụ thuộc thư viện và thư viện được tải nếu được tìm thấy và các tham chiếu được thêm vào tệp dự án IDEA. Nếu bạn không muốn tải xuống / tham khảo chúng, hãy sử dụng lệnh gen-idea no-classifiers no-sbt-classifiers.


SBT 0,7

Để sử dụng nó, chỉ cần chạy nó từ shell sbt của bạn, nó sẽ sử dụng plugin như một chương trình bên ngoài:

 > *sbtIdeaRepo at http://mpeltonen.github.com/maven/
 > *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
 ...
 > update
 ...
 > idea
 ...

Bạn cũng có thể thêm đặc điểm trong định nghĩa dự án của bạn, như bạn muốn:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}

4
Tôi hoàn toàn chuyển đổi sang plugin này. Sử dụng kết hợp với plugin ý tưởng-sbt, cho phép bạn ủy thác bản dựng dự án của mình cho SBT và sử dụng SBT tương tác từ cửa sổ công cụ trong IDEA. Phiên bản 0.2.0-SNAPSHOT của sbt-idea khắc phục một vài phiền toái - tạo dự án mẹ và bảo toàn cấu hình IntelliJ thủ công.
retronym

Cảm ơn bạn cho plugin này. Nó thực sự là helfpul!
ksemeks

4
Tôi rút lại câu trả lời của mình. Đây là một plugin tuyệt vời và bây giờ tôi sử dụng nó mỗi lần.
Synesso

1
Tôi đã thêm câu trả lời cho SBT 0.10.0, hoàn toàn khác với SBT 0.7.x + stackoverflow.com/questions/4250318/ trên
opyate

Cảm ơn opyate, tôi đã cập nhật bài viết của mình theo nhận xét của bạn
Steve Gury

11

Để bây giờ tôi làm điều này bằng tay. Nó khá đơn giản.

  1. Tạo dự án với SBT
  2. Tạo một dự án IDEA mới với cùng một đường dẫn gốc
  3. Tạo một mô-đun với cùng một đường dẫn gốc
  4. Đặt src / main / scala làm đường dẫn src trên mô-đun
  5. Đặt src / test / scala làm đường dẫn thử nghiệm trên mô-đun
  6. Thêm scala-library.jar làm thư viện
  7. Thêm lib (nếu có) như một thư mục jar trong thư viện mô-đun
  8. Thêm lib_managed / compile (nếu có) dưới dạng thư mục jar trong thư viện mô-đun
  9. Thêm lib_managed / test (nếu có) như một thư mục jar trong thư viện mô-đun

Đó là từ bộ nhớ. Sẽ tốt hơn nếu nó được tự động hóa, nhưng nó không phải là vấn đề lớn như bây giờ.

Một lưu ý thận trọng: Cách tiếp cận trên không hoạt động tốt với sbt trường học mới, tức là phiên bản 0.10 trở lên, vì nó không sao chép phụ thuộc vào lib_managed theo mặc định. Bạn có thể thêm

retrieveManaged := true

vào build.sbt của bạn để làm cho nó sao chép các phụ thuộc vào lib_managed.


Nhưng, bạn có bắt đầu dự án (cầu cảng) của mình từ IntelliJ hoặc từ một thiết bị đầu cuối không? Tôi không thể thiết lập trình khởi chạy / trình biên dịch dự án từ IDE.
ksemeks

Một điều nữa: Tôi đã làm mọi thứ bạn đã viết, nhưng IntelliJ đang nói "Không thể giải quyết ký hiệu ne" cho việc nhập "nhập net.liftweb.LiftRules"
ksemeks

Tôi quản lý để có được xung quanh nhập khẩu. Tôi đã phải nhập / lib_managed / biên dịch thay vì / lib_managed
ksemeks

6
Trả lời rút lại! Sử dụng plugin sbt-idea.
Synesso

7

Tempus fugit và IntelliJ IDEA đã trở nên tốt hơn rất nhiều trong những ngày này. Rốt cuộc là năm 2015 phải không?

Phải nói rằng, phiên bản mới nhất của IntelliJ IDEA 14.0.2 hỗ trợ các dự án sbt ra khỏi hộp với plugin Scala . Chỉ cần cài đặt plugin và bạn sẽ có thể mở các dự án Scala / sbt mà không gặp nhiều rắc rối.

Plugin Scala trong Plugins in Preferences

Tôi đang sử dụng phiên bản Early Access của plugin là 1.2.67.6.EAP tại thời điểm viết bài.

Với plugin chỉ vào một dự án sbt và IDEA sẽ cung cấp cho bạn một trình hướng dẫn để mở loại dự án đó.

Dự án nhập khẩu sbt

Về ý tưởng sbt trong sbt 0.12.4

Đối với sbt 0.12.4 , tệp cấu hình plugin toàn hệ thống - ~/.sbt/plugins/build.sbthoặc PROJECT_DIR/project/plugins.sbt- nên có các dòng sau:

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")

Chạy sbt gen-ideađể tạo tập tin dự án IDEA.

Đọc trang web plugin sbt-idea để biết thêm thông tin cập nhật. Bạn cũng có thể thấy mục blog của tôi Nhập dự án dựa trên sbt vào IntelliJ IDEA 13 (với sbt-idea, Scala 2.11 và sbt 0.12) hữu ích.


Khi tạo dự án mới. Sau khi sbt gen-idea dự án trống. Không có cấu trúc, không src, thư mục thử nghiệm. Và nó thật khập khiễng ..
Ses

Làm thế nào bạn tạo ra dự án? Cấu trúc thư mục và các tập tin bên trong là gì?
Jacek Laskowski

Nó chỉ là trống rỗng. Tôi phải đặt nó "chính / scala / src" bằng tay. Nhưng tôi có thể sống với điều đó.
vừng

Bạn có thể muốn sử dụng github.com/n8han/giter8 như một phương tiện để khởi động một dự án sbt. sbt có thể có một thư mục trống làm dự án chính và main / scala / src là không cần thiết - chỉ cần đặt các tệp Scala của bạn vào thư mục chính để sbt chọn chúng.
Jacek Laskowski

5

Đối với sbt 0,7

Xem câu trả lời ở nơi khác trên trang này .

Đối với sbt 0,10

Nhân bản và xây dựng ý tưởng sbt của Ismael:

git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package

Tạo một thư mục lib plugin sbt nếu bạn chưa có

mkdir -p  ~/.sbt/plugins/lib

Sao chép bình được xây dựng ở bước một vào đây

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

Khởi động lại hoặc tải lại sbt, sau đó bạn có thể chạy gen-idea(hoặc gen-idea with-classifiersnếu bạn muốn nguồn và javadoc trong intelliJ)

Nguồn: Gợi ý của nhóm về nhóm tin nhắn .

Trong IntelliJ IDEA 13.x

Bạn có thể mở một dự án dựa trên SBT trong IDEA ngày nay. Nó sẽ tạo dự án và mô-đun cần thiết và luôn cập nhật các phụ thuộc của bạn bất cứ khi nào bạn thay đổi tập lệnh xây dựng.


2

Tôi vừa trải qua tất cả nỗi đau này. Tôi dành nhiều ngày cố gắng để có được một môi trường chấp nhận được và đã đi đến kết luận rằng ENSIME, SBT và JRebel sẽ trở thành môi trường phát triển của tôi trong một thời gian. Vâng, nó sẽ quay trở lại Emacs, nhưng ENSIME biến nó thành một chút hoặc một ý tưởng với tái cấu trúc, hỗ trợ gỡ lỗi, điều hướng, v.v. Nó không ở đâu tốt như Eclipse (Java), nhưng trừ khi các plugin scala hoạt động tốt hơn thì đó là tốt nhất chúng ta có.

Cho đến khi các môi trường phát triển Scala bắt đầu hoạt động (Eclipse hoặc IntelliJ), tôi sẽ không bận tâm. Họ chỉ là quá lỗi.

Xem các cuộc thảo luận trên các trang web thang máy.

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

Trong chuỗi đó, có một liên kết đến một HOWTO cho IntelliJ, nhưng mặc dù nó hoạt động tốt, có nhiều vấn đề khiến nó ít hữu ích hơn một chút.

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/


Tôi đã đọc nó. Bài viết này sử dụng maven, mà tôi quản lý để làm việc. Bây giờ tôi đang cố gắng làm điều tương tự, chỉ với sbt, không có maven.
ksemeks

Tôi có thể thiết lập dự án cho IntelliJ để sử dụng nó, nhưng không thể làm việc với trình biên dịch / launcher sbt.
ksemeks

Theo như ENSIME có liên quan: có dễ dàng để làm việc không? Tôi đã thử một lần, nhưng tôi chưa bao giờ làm việc với emacs, vì vậy nó hơi khó với tôi. đang làm việc với emacs một tiền đề?
ksemeks

Liên kết sau sẽ đưa bạn qua thiết lập SBT. Điều này làm việc với tôi, nhưng một lần nữa làm việc với SBT và IntelliJ theo cách không tích hợp thực sự giống như sử dụng hai công cụ riêng biệt, mà ENSIME với SBT tự nhiên hơn nhiều. heikoseeberger.blogspot.com/2010/08/ khăn
andyczerwonka

2

Các câu trả lời đã cũ cho năm 2014. Trong IntelliJ 13.x , plugin Scala là ver 0.41.2 (đã bao gồm SBT).

Phiên bản SBT của tôi là 0.13,5 (thiết bị đầu cuối sbt sbtVersion:)

Chuyển đến thư mục gốc của dự án và nhập vào thiết bị đầu cuối

sbt idea

Bạn sẽ thấy hai thư mục ẩn mới .idea.idea_modules .

Sau đó trong IntelliJ, File> Open> chọn dự án. Nó sẽ mở dự án mà không có bất kỳ vấn đề.


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.