2012-07-20 32 views
15

Tôi muốn gọi sbt update trong mã nguồn của mình, để cập nhật nhiều dự án sbt. Trong vỏ này là dễ dàng:Đặt thư mục làm việc hiện tại khi thực hiện quy trình vỏ

cd /path/to/project && sbt update 

Nhưng nếu tôi sử dụng scala.sys.process trong mã của tôi, nó sẽ không nhớ cd do đó sbt được gọi trong thư mục sai. Mã như sau:

import scala.sys.process._ 
("cd /path/to/project" #&& "sbt update").!! 

Và tôi không tìm thấy trong tài liệu bất kỳ khả năng nào để đặt đường dẫn dự án của sbt thông qua bảng điều khiển. Sẽ tốt hơn nếu một cái gì đó như thế này hoạt động:

"sbt -projectPath /path/to/project update".!! 

Nếu có điều gì đó có thể, điều này sẽ giúp tôi tiết kiệm rất nhiều rắc rối! (Đặc biệt là nó chạy trên UNIX và Windows.)

+2

Bạn có thể thử sử dụng Quy trình (cmd, cwd) !! để thiết lập rõ ràng thư mục làm việc. – venechka

+0

Tiêu đề của câu hỏi này là vô cùng gây hiểu nhầm. Câu hỏi không liên quan gì đến sbt - nó có thể là bất kỳ chương trình nào khác. –

Trả lời

32

Sử dụng một trong những phương pháp ProcessBuilder nhà máy trên đối tượng Process:

sys.process.Process(Seq("sbt","update"), new java.io.File("/path/to/project")).!! 

Đối với tài liệu nhiều hơn, xem scaladoc file for the sys.process package. Thật không may, nó không đề cập đến các đối số 'thư mục làm việc hiện tại', nhưng chúng nằm trong tài liệu của đối tượng Process.

+0

Tôi đã sử dụng phiên bản "java" với 'java.lang.ProcessBuilder' và đó là phương thức' thư mục', nhưng điều này là thanh lịch hơn, giống scala hơn. Cảm ơn vì điều đó! – Themerius

+0

Cảm ơn, Nó đã giúp :) – Vinay

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