Các dự án của tôi vẫn đang sử dụng sbt 0.7.7 và tôi thấy rất thuận tiện khi có các lớp tiện ích mà tôi có thể chạy từ dấu nhắc sbt. Tôi cũng có thể kết hợp điều này với các thuộc tính được duy trì riêng - thường cho các giá trị liên quan đến môi trường thay đổi từ máy chủ đến máy chủ. Đây là một ví dụ về định nghĩa dự án của tôi dưới thư mục project/build
:sbt 0,11 ví dụ nhiệm vụ chạy cần thiết
class MyProject(info: ProjectInfo) extends DefaultProject(info) {
//...
lazy val extraProps = new BasicEnvironment {
// use the project's Logger for any properties-related logging
def log = MyProject.this.log
def envBackingPath = path("paths.properties")
// define some properties that will go in paths.properties
lazy val inputFile = property[String]
}
lazy val myTask = task { args =>
runTask(Some("foo.bar.MyTask"),
runClasspath, extraProps.inputFile.value :: args.toList).dependsOn(compile)
describedAs "my-task [options]"
}
}
tôi sau đó có thể sử dụng công việc của tôi như my-task option1 option2
dưới vỏ SBT.
Tôi đã đọc tài liệu sbt 0.11 mới tại https://github.com/harrah/xsbt/wiki bao gồm các phần trên Tasks và TaskInputs và thẳng thắn tôi vẫn đang đấu tranh về cách hoàn thành những gì tôi đã làm trên 0.7.7.
Có vẻ như các thuộc tính bổ sung có thể được thay thế một cách riêng biệt environment.sbt
, các tác vụ đó phải được xác định trong project/build.scala
trước khi được đặt trong build.sbt
. Nó cũng giống như có hỗ trợ hoàn thành, trông rất thú vị.
Ngoài ra, tôi hơi bị choáng ngợp. Làm thế nào để hoàn thành những gì tôi đã làm với sbt mới?
Tôi muốn giúp đỡ, nhưng tôi không nhớ chi tiết về SBT 0.7.7. Tôi tự hỏi nếu câu hỏi này có thể được chia thành nhiều câu hỏi khép kín về sbt 0,11? –
@KiptonBarros, chắc chắn - hãy bắt đầu với 'runTask' cơ bản mà tôi có thể cung cấp các đối số trên trình bao sbt. – huynhjl
Dường như tài liệu của sbt hiện đang được sửa đổi. Tôi nghĩ phần "Định nghĩa tác vụ nhập cơ bản" trên trang wiki của [Nhập nhiệm vụ] (https://github.com/harrah/xsbt/wiki/Input-Tasks) là những gì bạn đang tìm kiếm. –