2015-12-13 20 views
9

Một dự án chơi có một "dự án" thư mục như thế này:Cấu trúc thư mục SBT. "Dự án" là gì?

  • dự án
    • mục tiêu
    • dự án
      • mục tiêu

Tôi luôn nghĩ đây chỉ là một trong những bí ẩn trong cuộc sống mà tôi không nên suy nghĩ quá nhiều, nhưng hôm nay sự tò mò của tôi là tốt nhất của tôi.

Googling đã cho tôi this đề cập đến thư mục "dự án" cấp cao nhất dành cho cấu hình sbt. Tôi tự hỏi tại sao họ không gọi nó là ".sbt" a la ".git" và tại sao vẫn còn một tệp "build.sbt" bên ngoài thư mục đó, nhưng tôi cho rằng không có gì thú vị khi làm cho mọi thứ trở nên có ý nghĩa.

Nó cũng không đề cập đến lý do tại sao nó chứa một thư mục "dự án" khác bên trong nó.

Tại sao có thư mục "project" lồng nhau?

+0

Không phát cụ thể, nhưng SBT liên quan – cchantep

+0

@cchantep cảm ơn, tôi đã chỉnh sửa tiêu đề –

Trả lời

6

http://www.scala-sbt.org/0.13/tutorial/Organizing-Build.html:

build.sbt che giấu như thế nào SBT thực sự hoạt động. Các bản dựng sbt được định nghĩa bằng mã Scala. Mã đó, chính nó, phải được xây dựng. Điều gì tốt hơn so với sbt?

Thư mục dự án là một bản dựng khác bên trong bản dựng của bạn, công cụ này biết cách xây dựng bản dựng của bạn. Để phân biệt các bản dựng, đôi khi chúng tôi sử dụng thuật ngữ xây dựng thích hợp để tham chiếu đến bản dựng của bạn và meta-build để tham chiếu đến bản dựng trong dự án. Các dự án bên trong metabuild có thể làm bất cứ điều gì mà bất kỳ dự án nào khác có thể làm. Định nghĩa xây dựng của bạn là một dự án sbt.

Và rùa rơi xuống hết cỡ. Nếu bạn thích, bạn có thể tinh chỉnh định nghĩa xây dựng của dự án xây dựng định nghĩa, bằng cách tạo một thư mục project/project /.

+1

nên đã thực sự đọc trang ... Tôi chỉ xem biểu đồ cấu trúc –

+1

Để giải thích điều này, các plugin cho SBT thường được định cấu hình trong metabuild, vì chúng cần phải có sẵn để xây dựng dự án thực tế của bạn. Nó không phải là điển hình để có một meta-metabuild ... nhưng bạn có thể. – acjay

+2

FTR, chúng tôi có một meta-meta-build trong https://github.com/scala-js/scala-js, trong đó có trình tạo mã nguồn tạo nguồn * cho dự án xây dựng *, tức là, cho meta-build . Vì vậy, * có *, bạn có thể! – sjrd

2

SBT là đệ quy. Nó định nghĩa các thuộc tính xây dựng cho dự án của bạn với mã scala. Nơi để đặt mã scala? Để dự án khác bên trong dự án hiện tại. Nhưng nếu định nghĩa dự án chính nó là một dự án thích hợp thì nó có thể được cấu hình với một cấu hình sbt khác. Và cứ thế. Scala guys như cấu trúc đệ quy.

Bạn có thể thay đổi phiên bản trình biên dịch scala, tùy chọn trình biên dịch scala cho các dự án lồng nhau (theo nghĩa meta). Nó có lẽ có thể thay đổi cách metaproject được giải thích và có thể ảnh hưởng đến dự án tối đa.

+1

"Bạn có thể thay đổi phiên bản trình biên dịch scala" Đây là một điều bạn không nên thay đổi, vì đối với meta-builds, nó phải là cùng một phiên bản mà SBT sử dụng. –

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