2013-04-25 7 views
12

내 SBT (0.12.2) 프로젝트에 사용자 지정 작업이 있습니다. a, bc이라고합시다. 따라서 SBT의 대화식 모드에서 a을 입력하면 a과 관련된 작업이 실행됩니다. 또한 ;a;b;c을 입력 할 수 있으며 세 가지 작업이 순서대로 실행됩니다. 같은 방식으로 ;clean;compile 같은 것을 할 것입니다. 대화 형 셸에서 수행 할 수있는 작업은 별칭을 만들어 모두 실행하는 것입니다 : alias all=;a;b;c. 이제 all을 입력하면 작업이 분명한 방식으로 실행됩니다. 달성하고자하는 일은 내 프로젝트에 대한 SBT 구성 내에서이 별칭을 만드는 것입니다. 작업에 SBT 문서 거래의작업 시퀀스에 별칭을 지정하는 방법은 무엇입니까?

This section 있지만, 모든 내가 달성 할 수는 다음과 같이이었다 :

lazy val a = TaskKey[Unit]("a", "does a") 
lazy val b = TaskKey[Unit]("b", "does b") 
lazy val c = TaskKey[Unit]("c", "does c") 
lazy val all = TaskKey[Unit]("all", ";a;b;c") 

lazy val taskSettings = Seq(
    all <<= Seq(a,b,c).dependOn 
) 

나는이 방법으로이 문제는 작업 을 결합하여 자신의 실행에서 일어나는 있다는 것입니다 순차적 인 것과는 대조적으로, 내가 성취하고자하는 것은 바로 이것이다. 그렇다면 alias all=;a;b;c과 같은 별칭을 SBT 구성 파일에 어떻게 만들 수 있습니까? 내가 같은 일을 찾고 있었어요

lazy val taskSettings = Seq(
    all <<= c dependsOn (b dependsOn a) 
) 

답변

20

하나를 제공하는 쉬운 앨리어싱의 방법 및 the commit에 대한 this request을 발견 :

+1

그래, 그들은 0.13에 멋진 것들을 잔뜩 추가 할 것입니다. 아마도 전체 빌드 구성이 출시 될 때까지 더 이상 필요하지 않을 것입니다. – agilesteel

+0

허, 나도 버전 태그를 알지 못했다. 그것은 나를 위해 0.12.1에서 작동합니다. :) – lime

9

나는 그것을 알아 냈어요 addCommandAlias. 에서

build.sbt 내가 지금 가지고 : 당신이 추측 할 수 있듯이, 콘솔에 go를 작성하는 것은 지금 나를 위해 긴 명령 시퀀스를 실행합니다

addCommandAlias("go", ";container:start;~copy-resources") 

.

+0

나는 왜 "의 DependsOn은"순서가 이미 정의되어 주어진 -thing 것을 모두 할 수 있을까 "; A는, B, C"만약'C의 DependsOn (ㄱ의 DependsOn가)' – ses

6

이를 달성하는 또 다른 방법은 프로젝트 디렉토리의 루트에있을 것이다 .sbtrc 파일에 별명을 정의하는 것입니다.

alias all=;a;b;c 

당신은이 별칭이 모든 프로젝트에 사용할 수있는 경우 홈 디렉토리에이 .sbtrc 파일을 정의하는 추가 옵션이 있습니다. "; A는, B, C"또는 왜 정의

+1

멋진데. 나는 그것을 몰랐다. 고마워. – agilesteel

관련 문제