В моем определении сборки проекта для параметра SettingKey useProguard в области Android установлено значение true. Это то, что я хочу по умолчанию. Однако когда я выполняю одну конкретную задачу, я хочу, чтобы useProguard был false. Все в области Android происходит от sbt-android-plugin.
Я не уверен, как лучше решить эту проблему. Из того, что я прочитал, похоже, что команда может выполнить работу, поскольку она может выполнить задачу с состоянием, отличным от того, что видит ваш текущий сеанс. Я пытался создать такую команду так:
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
}
Я добавляю команду к настройкам своего проекта и запускаю команду «build-without-proguard», которая при необходимости выполняет задачу buildAndRun. Однако useProguard все еще имеет значение true, а не false, как я и ожидал.
Во-первых, весь этот подход кажется мне тяжелым. Если предположить, что изменение sbt-android-plugin здесь не вариант, то как еще я могу решить эту проблему?
Во-вторых, почему этот подход не работает как есть?