Tôi đang phát triển một số mô-đun với các phụ thuộc giữa chúng và muốn làm việc với tất cả chúng cùng nhau trong một dự án IDEA. Tôi đang sử dụng sbt-idea để tạo các dự án IDEA từ các định nghĩa xây dựng sbt, điều này hoạt động tốt cho các dự án riêng lẻ. Tuy nhiên, trong trường hợp nhiều mô-đun, những thứ tôi đã thử cho đến nay không hoàn toàn hoạt động:
Sử dụng sbt-idea để tạo tệp IDEA .iml cho từng mô-đun một cách độc lập ; sau đó tạo một dự án IDEA tổng thể từ đầu và thêm các mô-đun đó vào nó. Điều này làm cho tất cả các nguồn mô-đun có thể chỉnh sửa trong cùng một cửa sổ, nhưng các phụ thuộc giữa chúng không được theo dõi (vì vậy việc cố gắng điều hướng từ một số nguồn trong dự án foo đến một thứ gì đó trong thanh sẽ đưa tôi đến phiên bản thư viện đã nhập của thanh , không phải các nguồn cục bộ ).
Sử dụng các bản dựng đa dự án sbt (hay còn gọi là các dự án con) , trong đó Build.scala của dự án mẹ chứa những thứ như:
lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)
Điều này hầu như hoạt động, trong ý tưởng sbt đó tạo ra một dự án IDEA tổng thể với các phụ thuộc giữa các dự án con được theo dõi. Tuy nhiên, có hai lưu ý:
- Nó dường như là một hạn chế sbt rằng các dự án con phải sống trong các thư mục con của dự án tổng thể (tức
file("../foo")
là không được phép). Đây thực sự không phải là điều tôi muốn (điều gì sẽ xảy ra nếu một mô-đun - chẳng hạn như gói "utils" hoặc "commons" - được sử dụng trong hai dự án tổng thể khác nhau?) Nhưng tôi có thể sống chung với nó. - Một trong các tiểu dự án của tôi có các tiểu dự án của riêng nó; Tôi không chắc liệu bản thân sbt có xử lý các dự án lồng nhau này một cách chính xác hay không, nhưng trong mọi trường hợp chúng đều bị sbt-idea bỏ qua. Rõ ràng là tôi cần các dự án con lồng nhau được đưa vào một cách đệ quy trong dự án tổng thể.
Tóm lại: Tôi muốn thu thập các mô-đun có thể đã có các dự án con thành một dự án IDEA lớn với các phụ thuộc được theo dõi để chỉnh sửa thuận tiện. Tôi làm nó như thế nào? Cảm ơn!