2014-04-03 11 views
6

Tôi đang cố gắng chuyển đổi một dự án mô-đun đơn thành hai mô-đun với tổng hợp gốc . Cảm thấy như một việc bình thường.Plugin sbt không được chọn từ các mô-đun con?

Vì vậy, để đơn giản hóa tôi đã loại bỏ các dự án thứ hai mà tôi thêm vào, nhưng tôi làm điều gì đó như:

cd myproject 
mkdir core 
mv * core 

và sau đó thêm một build.sbt trong myproject như

lazy val root = project.in(file(".")).aggregate(core) 
lazy val core = project in file("core") 

Tuy nhiên , cố gắng tạo lõi tôi nhận được:

[myproject]/core/build.sbt:22: error: not found: value lessSettings seq(lessSettings:_*)

là cài đặt cho plugin được thêm vào dự án/plugins.sbt của dự án ban đầu hiện tại trong

[myproject]/core/project/plugins.sbt 

Làm thế nào đến việc này không được chọn? Tôi không thể có plugin chỉ sống ở mô-đun con? cd: ing vào submodule lõi và chạy sbt nó hoạt động tốt. Tôi có để chuyển các plugin của mình tới root/project không? Khá vui lòng, nó không thể như vậy?

Trả lời

7

Tệp plugin.sbt của bạn bị bỏ qua vì bạn không thể có thư mục con project trong một dự án con của một bản dựng nhiều dự án.

Trong một multi-project build,

  • Các .sbt file của dự án gốc, và tất cả .sbt file của tất cả các tiểu dự án, đều là một phần của một đơn xây dựng định nghĩa. Các thiết lập được định nghĩa trong một tiểu dự án chỉ được tự động scoped cho dự án đó.

  • Vì chỉ có một định nghĩa xây dựng nên chỉ có một dự án để xây dựng định nghĩa xây dựng đó và trong thư mục project/ của dự án gốc. Tất cả project/ thư mục của các dự án phụ sẽ bị bỏ qua.

Trong trường hợp của bạn, hãy di chuyển plugin.sbt vào thư mục gốc project sẽ làm cho plugin của bạn xuất hiện trở lại.

Hơn nữa, nếu bạn chỉ làm việc trên các dự án core, thay vì chạy sbt trong lõi, bạn có thể chạy sbt trong dự án gốc và gõ project core để "di chuyển" (trên thực tế, phạm vi tất cả mọi thứ bạn làm) đến tiểu lõi dự án.

+1

:. ( Vì vậy, tôi chỉ có một "phạm vi plugin" để nói xsbt-web-plugin sẽ gây ô nhiễm bản dựng cho lõi của tôi mà có thể không phải là dự án web. Lý tưởng sẽ có thể soạn một dự án đa mô-đun bằng cách trỏ đến các dự án khác nhau như là: –

+2

Nó không phải là xấu như nó có vẻ.Các plugin sẽ không gây ô nhiễm các dự án mà không nhập các thiết lập của họ. xsbt-web-plugin, bạn chỉ cần bỏ qua 'WebPlugin.webSettings' từ mỗi mô-đun con không thể áp dụng. Xem [multi-project branch of xwp-template] (https://github.com/earldouglas/xwp-template/blob/ multi-project/project/Build.scala) cho một ví dụ: – earldouglas

+0

Đồng ý.Tuy nhiên, tôi vẫn cảm thấy đây là một vấn đề kiến ​​trúc vì nó sẽ làm cho nó không thể bao giờ làm cho một tập hợp các dự án bằng cách chỉ đơn giản là đề cập đến chúng như là aggregates. Các submodules luôn phụ thuộc vào build trên siêu mô hình. –

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