Ý nghĩa biểu tượng Build.scala,% và %%


155

Tôi mới chơi! Framework 2.1 (phiên bản java) và không có kinh nghiệm với scala. Tôi không hiểu ý nghĩa %%%ý nghĩa của Build.scala. Tôi googled về họ nhưng không thể tìm thấy ý nghĩa của chúng.

Trong tệp Build.scala của tôi, tôi có:

"org.hibernate" % "hibernate-entitymanager" % "4.1.0.Final",
"com.typesafe" %% "play-plugins-mailer" % "2.1"

Tại sao dòng đầu tiên sử dụng ký hiệu% duy nhất và dòng thứ hai sử dụng hai ký hiệu phần trăm %%? Họ để làm gì?

Câu trả lời:


184

Từ tài liệu chính thức:

http://www.playframework.com/documentation/2.1.1/SBTDependencies

Bắt phiên bản Scala phù hợp với %%

Nếu bạn sử dụng groupID %% artifactID % revisionthay vì groupID % artifactID % revision(sự khác biệt là gấp đôi %%sau groupID), SBT sẽ thêm phiên bản Scala của dự án của bạn vào tên tạo tác. Đây chỉ là một phím tắt.

Bạn có thể viết cái này mà không cần %%:

val appDependencies = Seq(
  "org.scala-tools" % "scala-stm_2.9.1" % "0.3"
)

Giả sử bản scalaVersiondựng của bạn là 2.9.1, sau đây là giống hệt nhau:

val appDependencies = Seq(
  "org.scala-tools" %% "scala-stm" % "0.3"
)

Như bạn có thể thấy ở trên, nếu bạn sử dụng %%, bạn không phải chỉ định phiên bản.


2
"Phiên bản Scala của dự án của bạn" có nghĩa là giá trị của Cài đặt khóa scalaVersion.
Gordon Gustafson

4
đừng nghĩ việc đưa ra một câu hỏi SO riêng biệt là cần thiết cho câu hỏi bổ sung của tôi: khi nào tôi không muốn sử dụng %%? Đối với tôi có vẻ như nó 'tốt hơn' và nên được sử dụng luôn ....
Peter Perháč

10
@ PeterPerháč bạn không thể sử dụng %%với các tạo phẩm không chứa phiên bản Scala (chẳng hạn như các thư viện thuần Java).
Toxaris

25

Đây là một phần của SBT mà chơi sử dụng như một công cụ xây dựng. Cụ thể đây là một báo cáo nhập khẩu.

Biểu tượng phần trăm %thực sự là một phương pháp được sử dụng để xây dựng các phụ thuộc. Dấu hai phần trăm %%tiêm phiên bản Scala hiện tại - điều này cho phép bạn có được thư viện chính xác cho phiên bản scala bạn đang chạy. Điều này là để tránh phải thay đổi tệp xây dựng của bạn khi bạn cập nhật Scala.

Thêm thông tin ở đây

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.