2012-04-14 36 views
15

Tôi đang sử dụng phiên bản SBT gần đây (có vẻ khó để biết phiên bản đó là gì). Tôi muốn vượt qua thuộc tính hệ thống để ứng dụng của tôi với sbt run như sau:Thiết lập thuộc tính hệ thống với "sbt run"

sbt -Dmyprop=x run 

Làm thế nào tôi có thể làm điều đó?

Trả lời

16

Á hậu của SBT thường không tạo ra các quy trình mới, vì vậy bạn cũng phải yêu cầu nó làm điều này nếu bạn muốn đặt đối số được chuyển. Bạn có thể thêm nội dung như thế này vào cài đặt bản dựng của mình:

fork := true 

javaOptions := Seq("-Dmx=1024M") 

Có thêm chi tiết về quy trình đặt trong the SBT documentation.

+0

Làm thế nào bạn có thể làm điều này tại dòng lệnh w/lệnh chạy? –

+1

Chad đã đặt câu hỏi này như là một câu hỏi riêng biệt tại http://stackoverflow.com/questions/21389392/ –

8

tôi thấy cách tốt nhất để có thêm này để build.sbt:

// important to use ~= so that any other initializations aren't dropped 
// the _ discards the meaningless() value previously assigned to 'initialize' 
initialize ~= { _ => 
    System.setProperty("config.file", "debug.conf") 
} 

liên quan: Khi làm điều này để thay đổi cấu hình typesafe đó được nạp (trường hợp sử dụng của tôi), người ta cần đến cũng bằng tay bao gồm mặc định config. Đối với điều này, đề xuất của Cấu hình Typesafe include "application" không đủ nhưng include classpath("application.conf") đã hoạt động. Tư tưởng đề cập đến kể từ khi một số người khác cũng có thể muốn ghi đè lên các thuộc tính hệ thống cho chính xác cùng một lý do.

Nguồn: discussion trên mailing list SBT

+0

Chỉ ra rằng 'một số khác' là bản thân tôi, chỉ 8 ngày sau đó. Đã quản lý bằng cách nào đó có được phần 'classpath()' bị mất. Lý do # 1 cho các mục StackOverflow là để phục vụ như là lời nhắc nhở cho chính mình ... – akauppi

+1

Lưu ý: Vì một số lý do, điều này không còn hoạt động nếu người ta muốn định nghĩa riêng nó cho 'in Test' ở đâu đó trong build.sbt. Tất cả trong tất cả sử dụng 'khởi tạo' dường như được bán tài liệu tốt nhất, vì vậy tôi sẽ cho phương pháp 'ngã ba: = đúng' mà Luke Taylor gợi ý. – akauppi

+0

đó là một sự xấu hổ khi tôi ưa thích cách tiếp cận của bạn. Bạn vẫn còn ngã ba một JVM riêng biệt sau khi đặt 'javaOptions'? –

4

Cảm ơn các con trỏ, điều này thực sự đã giúp tôi giải quyết một vấn đề nào liên quan với Scala Tests.

Hóa ra là sbtkhông ngã ba các bài kiểm tra khi có tiểu dự án (xem code của tôi) và một số các xét nghiệm thất bại trong việc nhận tài sản của hệ thống.

Vì vậy, trong sbt -Dsomething="some value" test, một số các xét nghiệm sẽ thất bại khi thất bại trong việc tìm something trong các thuộc tính hệ thống (đã xảy ra là DB URI tôi, vì vậy nó kinda mattered!)

này được lái xe cho tôi hạt, vì vậy tôi tôi nghĩ rằng tôi sẽ đăng nó ở đây để tham khảo trong tương lai cho những người khác (như @akauppi được ghi nhận chính xác, rất có thể là "những người khác" cũng có thể là tôi trong một vài tuần!).

Việc sửa chữa là thêm dòng sau vào build.st:

fork in Test := false

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