[SCALA] 어떻게 SBT 명령 내부 설정을 변경하려면?
SCALA어떻게 SBT 명령 내부 설정을 변경하려면?
나는 (설정 명령의 실행시 계산되어야 함) 수정 된 버전의 설정으로 게시 작업을 실행 할 명령 게시 스냅 샷을 갖고 싶어.
나는 버전 내부 명령의 현재 값을 얻고, Project.runTask하는 방법을 알아 냈 ( "범위"를 "작업", ...) 게시 작업을 호출하기위한 옳은 것 같다.
나는 혼동 해요있는 유일한 것은 새 버전 값을 주 인스턴스를 수정하는 방법입니다. 내 모든 시도는 원래 버전 설정으로 아무것도하지 않는 것 같다.
내 마지막 시도 :
val printVers = TaskKey[Unit]("printvers")
val printVersTask = TaskKey[Unit]("printvers") <<= {version map println}
def publishSnapshot = Command.command("publish-snapshot") { state =>
val newState = SessionSettings.reapply(state.get(sessionSettings).get.appendRaw(version := "???"), state)
Project.runTask(printVers in Compile, newState, true)
state
}
lazy val root = Project("main", file("."),
settings =
Defaults.defaultSettings ++
Seq(printVersTask)).settings(commands += publishSnapshot)
이 문제를 해결하기 위해 어떤 방법이 있나요?
해결법
-
==============================
1.이것은 실제로 나를 위해 작동하지 않았다. 나는 SBT의 0.13.7을 사용하고 있습니다
이것은 실제로 나를 위해 작동하지 않았다. 나는 SBT의 0.13.7을 사용하고 있습니다
나는 위의 예에해야 할 일을했을 무엇 적응, 내가 좋아하는 뭔가를해야했다 :
def publishSnapshot = Command.command("publish-snapshot") { state => val extracted = Project extract state val newState = extracted.append(Seq(version := "newVersion"), state) val (s, _) = Project.extract(newState).runTask(publish in Compile, newState) s }
또는 대안 수행
def publishSnapshot = Command.command("publish-snapshot") { state => val newState = Command.process("""set version := "newVersion" """, state) val (s, _) = Project.extract(newState).runTask(publish in Compile, newState) s }
-
==============================
2.SBT 메일 링리스트의 도움으로, 나는 다음과 같은 솔루션을 만들 수 있었다 :
SBT 메일 링리스트의 도움으로, 나는 다음과 같은 솔루션을 만들 수 있었다 :
def publishSnapshot = Command.command("publish-snapshot") { state => val extracted = Project extract state import extracted._ val eVersion = getOpt(version).get // getting current version runTask(publish in Compile, append(Seq(version := "newVersion"), state), true ) state }
-
==============================
3.명령에서 임의의 설정을 업데이트하려면 다음과 같은 작업을 수행합니다
명령에서 임의의 설정을 업데이트하려면 다음과 같은 작업을 수행합니다
def updateFoo = Command.command("updateFoo") { state => val extracted = Project extract state import extracted._ println("'foo' set to true") //append returns state with updated Foo append(Seq(foo := true), state) }
from https://stackoverflow.com/questions/14262798/how-to-change-setting-inside-sbt-command by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 람다 함수에서 _의 사용 (0) | 2019.11.07 |
---|---|
[SCALA] 자바 scala.collection.immutable.Map에 java.util.HashMap에 변환 (0) | 2019.11.06 |
[SCALA] 왜 싱글 톤 객체 지향 더 많은 개체입니까? (0) | 2019.11.06 |
[SCALA] 가변 인자와 스파크 UDF (0) | 2019.11.06 |
[SCALA] 발과 스칼라 클래스 내부 객체? (0) | 2019.11.06 |