2012-07-10 27 views
97

Tôi đang ra khỏi tủ quần áo trên này! Tôi không hiểu SBT. Ở đó, tôi đã nói rồi, giờ hãy giúp tôi.Ai đó có thể giải thích đúng cách để sử dụng SBT không?

Tất cả các con đường đều dẫn đến Rome, và đó là như nhau cho SBT: Để bắt đầu với SBTSBT, SBT Launcher, SBT-extras, vv, và sau đó có những cách khác nhau để bao gồm và quyết định kho. Có cách nào tốt nhất không?

Tôi hỏi vì đôi khi tôi bị mất một chút. Tài liệu SBT rất kỹ lưỡng và đầy đủ, nhưng tôi thấy mình không biết khi nào nên sử dụng build.sbt hoặc project/build.properties hoặc project/Build.scala hoặc project/plugins.sbt.

Sau đó, nó trở nên thú vị, có Scala-IDESBT - Cách chính xác để sử dụng chúng cùng nhau là gì? Điều gì đến trước, gà hoặc trứng?

Quan trọng nhất có lẽ là, làm thế nào để bạn tìm thấy các kho và phiên bản phù hợp để đưa vào dự án của bạn? Tôi chỉ cần kéo một cái máy và bắt đầu hacking theo cách của tôi về phía trước? Tôi khá thường xuyên tìm thấy các dự án bao gồm tất cả mọi thứ và bồn rửa nhà bếp, và sau đó tôi nhận ra - Tôi không phải là người duy nhất bị mất một chút.

Ví dụ đơn giản, ngay bây giờ, tôi đang bắt đầu một dự án hoàn toàn mới. Tôi muốn sử dụng các tính năng mới nhất của SLICKScala và điều này có thể sẽ yêu cầu phiên bản SBT mới nhất. Điểm lành mạnh để bắt đầu là gì và tại sao? Tôi nên xác định tệp nào và nó nên trông như thế nào? Tôi biết tôi có thể làm việc này, nhưng tôi thực sự muốn có một ý kiến ​​chuyên gia về nơi mọi thứ nên đi (tại sao nó nên đến đó sẽ là một tiền thưởng).

Tôi đã sử dụng SBT cho các dự án nhỏ trong hơn một năm nay. Tôi đã sử dụng SBT và sau đó SBT Extras (vì nó làm cho một số cơn đau đầu biến mất một cách kỳ diệu), nhưng tôi không chắc tại sao tôi nên sử dụng cái này hay cái kia. Tôi chỉ cảm thấy hơi thất vọng vì không hiểu những thứ phù hợp với nhau như thế nào (SBT và kho lưu trữ), và nghĩ rằng nó sẽ cứu người tiếp theo đến đây rất nhiều khó khăn nếu điều này có thể giải thích bằng con người.

+2

Chính xác những gì bạn có ý nghĩa gì với "có Scala-IDE và SBT"? Bạn xác định dự án của bạn với sbt và sbt có thể tạo ra một dự án ide (eclipse oder intellij). Vì vậy, SBT đến đầu tiên ... – Jan

+2

@ Tôi đã đề cập rằng vì Scala-IDE sử dụng SBT làm người quản lý xây dựng. Xem http://www.assembla.com/spaces/scala-ide/wiki/SBT-based_build_manager và hạ thấp xuống trong bài đăng mà họ đề cập đến "Không cần phải xác định tệp dự án SBT của bạn." mà tôi thấy khó hiểu. – Jack

+0

ok. Như tôi thường sử dụng intellij (hoặc tuyệt vời) để chỉnh sửa scala tôi không biết điều đó. Tôi đoán người xây dựng tạo cấu hình sbt của riêng mình? – Jan

Trả lời

28

Quan trọng nhất có thể là, làm thế nào để bạn tìm thấy các kho và phiên bản phù hợp để đưa vào dự án của bạn? Tôi chỉ cần kéo ra một cái máy và bắt đầu hacking theo cách của tôi về phía trước? Tôi khá thường xuyên tìm các dự án bao gồm tất cả mọi thứ và bồn rửa nhà bếp

Đối với phụ thuộc Scala dựa trên, tôi sẽ đi với những gì các tác giả khuyên. Ví dụ: http://code.google.com/p/scalaz/#SBT chỉ sử dụng:

libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.4" 

Hoặc https://github.com/typesafehub/sbteclipse/ có hướng dẫn về nơi để thêm:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0-RC1") 

Đối với phụ thuộc dựa trên nền Java, tôi sử dụng http://mvnrepository.com/ để xem những gì trên mạng, sau đó nhấp vào Tab SBT. Ví dụ http://mvnrepository.com/artifact/net.sf.opencsv/opencsv/2.3 chỉ sử dụng:

libraryDependencies += "net.sf.opencsv" % "opencsv" % "2.3" 

Sau đó kéo ra machette và bắt đầu hack theo cách của bạn về phía trước. Nếu bạn may mắn, bạn không kết thúc bằng cách sử dụng lọ phụ thuộc vào một số các lọ tương tự nhưng với các phiên bản không tương thích. Với hệ sinh thái Java, bạn thường kết thúc bao gồm tất cả mọi thứ và bồn rửa nhà bếp và phải mất một số nỗ lực để loại bỏ các phụ thuộc hoặc đảm bảo bạn không thiếu phụ thuộc bắt buộc.

Ví dụ đơn giản, ngay bây giờ, tôi bắt đầu một dự án hoàn toàn mới. Tôi muốn sử dụng các tính năng mới nhất của SLICK và Scala và điều này có thể sẽ yêu cầu phiên bản mới nhất của SBT. Điểm lành mạnh để bắt đầu là gì và tại sao?

Tôi nghĩ điểm lành mạnh là build immunity to sbt gradually.

Hãy chắc chắn rằng bạn hiểu:

  1. phạm vi định dạng {<build-uri>}<project-id>/config:key(for task-key)
  2. 3 hương vị các thiết lập (SettingKey, TaskKey, InputKey) - đọc phần gọi là "Task Keys" trong http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def

Luôn mở 4 trang đó để bạn có thể nhảy và tra cứu các định nghĩa và ví dụ khác nhau:

  1. http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def
  2. http://www.scala-sbt.org/release/docs/Detailed-Topics/index
  3. http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html
  4. http://harrah.github.com/xsbt/latest/sxr/Defaults.scala.html

Tận dụng tối đa showinspectvà hoàn tab để làm quen với giá trị thực tế của các thiết lập, phụ thuộc của họ, định nghĩa và cài đặt liên quan.Tôi không tin rằng các mối quan hệ bạn sẽ khám phá bằng cách sử dụng inspect được ghi lại ở mọi nơi. Nếu có một cách tốt hơn tôi muốn biết về nó.

24

Con đường tôi sử dụng SBT là:

  1. sử dụng sbt-extras - chỉ nhận được kịch bản shell và thêm nó vào thư mục gốc của bạn dự án
  2. Tạo một thư mục dự án với một tập tin MyProject.scala lập sbt. Tôi thích điều này hơn cách tiếp cận build.sbt - scala của nó và linh hoạt hơn
  3. Tạo tệp dự án/plugins.sbt và thêm plugin thích hợp cho IDE của bạn. Hoặc là sbt-eclipse, sbt-idea hoặc ensime-sbt-cmd để bạn có thể tạo các tệp dự án cho eclipse, intellij hoặc ensime.
  4. Launch SBT trong thư mục gốc của dự án của bạn và tạo ra các tập tin dự án cho IDE của bạn
  5. Lợi nhuận

Tôi không bận tâm kiểm tra trong các tập tin dự án IDE vì chúng được tạo ra bởi SBT, nhưng có thể là lý do bạn muốn làm điều đó.

Bạn có thể xem ví dụ được thiết lập như thế này here.

+0

Cảm ơn bạn đã có câu trả lời hay. Tôi chấp nhận câu trả lời khác, bởi vì nó bao gồm nhiều mặt đất hơn, và lên bầu chọn lý do của bạn nó cũng thực sự tốt. Tôi đã chấp nhận cả hai nếu tôi có thể. – Jack

1

Sử dụng typesafe Activator, một cách ưa thích gọi SBT, mà đi kèm với các mẫu và hạt dự án: https://typesafe.com/activator

Activator new 

Fetching the latest list of templates... 

Browse the list of templates: http://typesafe.com/activator/templates 
Choose from these featured templates or enter a template name: 
1) minimal-java 
2) minimal-scala 
3) play-java 
4) play-scala 
(hit tab to see a list of all templates) 
+4

Tôi là một phần của ý tưởng rằng, khi nghi ngờ, thêm ma thuật _more_ vào hỗn hợp không có khả năng giải quyết vấn đề của bạn. – Cubic

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