Trong định nghĩa xây dựng dự án của tôi, SettingKey useProguard trong phạm vi Android được đặt thành true. Đây là những gì tôi muốn theo mặc định. Tuy nhiên, khi tôi thực hiện một tác vụ cụ thể, tôi muốn sử dụngProProguard là false. Mọi thứ trong phạm vi Android đều đến từ sbt-android-plugin.Sử dụng SBT, làm cách nào để bạn thực hiện tác vụ với giá trị Thiết lập [T] khác khi chạy?
Tôi không chắc cách tốt nhất để giải quyết vấn đề này. Từ những gì tôi đọc nó có vẻ như một lệnh có thể nhận được công việc làm, vì nó có thể thực hiện một nhiệm vụ với một trạng thái khác với những gì phiên hiện tại của bạn nhìn thấy. Tôi đã cố gắng tạo một lệnh như vậy:
def buildWithoutProguard = Command.command("build-without-proguard") { state =>
val extracted = Project.extract(state)
import extracted._
val transformed = session.mergeSettings :+ (useProguard in Android := false)
val newStructure = Load.reapply(transformed, structure)
val newState = Project.setProject(session, newStructure, state)
Project.evaluateTask(buildAndRun, newState)
state
}
Tôi đang thêm lệnh vào cài đặt dự án của mình và chạy lệnh 'build-without-proguard' thực hiện tác vụ buildAndRun như mong muốn. Tuy nhiên, useProguard vẫn đúng thay vì false như tôi mong đợi.
Đầu tiên, toàn bộ cách tiếp cận này cảm thấy rất nặng nề với tôi. Giả sử thay đổi sbt-android-plugin không phải là một tùy chọn ở đây thì tôi sẽ giải quyết vấn đề này như thế nào?
Thứ hai, tại sao phương pháp này không hoạt động như vậy?
bản sao có thể có của [Cách thay đổi cài đặt bên trong lệnh SBT?] (Http://stackoverflow.com/questions/14262798/how-to-change-setting-inside-sbt-command) –