2014-11-27 1 views
1

jar 아카이브에 패키징해야하는 여러 모듈이 포함 된 sbt 프로젝트가 있습니다. 내가 로그에서 보듯이 각 프로젝트 항아리 순차적으로 패키지를 SBT :병렬 패키지 용 sbt를 jars로 설정하는 방법은 무엇입니까?

[info] Packaging C:path\target\scala-2.11\projectFirst ... 
[info] Packaging C:path\target\scala-2.11\projectSecond ... 
[info] Packaging C:path\target\scala-2.11\projectThrird ... 

프로젝트는 서로 의존하지 않는 병렬로 포장 될 수있다. 패키지 프로젝트를 병렬로 설치할 수 있습니까?

답변

0

SBT documentation에서 우리는 문장 다음 찾을 수 있습니다 기본적으로

는 SBT는 병렬로 작업을 실행합니다.

실험을 준비했습니다. 4 개의 하위 프로젝트로 프로젝트를 만들었습니다.

build.sbt 주 : 이것은 코드

lazy val sub1 = project 

lazy val sub2 = project 

lazy val sub3 = project 

lazy val sub4 = project 

Keys.`package` in Compile <<= (Keys.`package` in Compile).dependsOn(Def.task { 
}) 

SUB1, SUB2에/build.sbt

Keys.`package` in Compile <<= (Keys.`package` in Compile).dependsOn(Def.task { 
    for(a <- 1 to 2){ 
     Thread.sleep(1000) 
     println("SubProject 1: " + a); 
    } 
}) 

, SUB3와 SUB4의 build.sbt는 SUB1에서와 거의 동일하다. 반복 횟수와 인쇄 된 번호 만 변경했습니다. I 출력 다음받은 :

> package 
SubProject 4: 1 
SubProject 1: 1 
SubProject 4: 2 
SubProject 1: 2 
SubProject 4: 3 
SubProject 3: 1 
SubProject 4: 4 
SubProject 3: 2 
SubProject 4: 5 
SubProject 3: 3 
SubProject 4: 6 
SubProject 3: 4 
SubProject 4: 7 
SubProject 2: 1 
SubProject 4: 8 
SubProject 2: 2 
SubProject 4: 9 
SubProject 2: 3 
[info] Updating {file:/D:/sbt/abc/}sub1... 
[info] Resolving org.scala-lang#scala-library;2.10.4 ... 
[info] Resolving org.scala-lang#scala-compiler;2.10.4 ... 
SubProject 4: 10 
[info] Resolving org.scala-lang#scala-reflect;2.10.4 ... 
[info] Resolving org.scala-lang#jline;2.10.4 ... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[info] Updating {file:/D:/sbt/abc/}abc... 
[info] Resolving org.scala-lang#scala-library;2.10.4 ... 
[info] Resolving org.scala-lang#scala-compiler;2.10.4 ... 
[info] Resolving org.scala-lang#scala-reflect;2.10.4 ... 
[info] Resolving org.scala-lang#jline;2.10.4 ... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[info] Updating {file:/D:/sbt/abc/}sub3... 
[info] Resolving org.scala-lang#scala-library;2.10.4 ... 
[info] Resolving org.scala-lang#scala-compiler;2.10.4 ... 
[info] Resolving org.scala-lang#scala-reflect;2.10.4 ... 
[info] Resolving org.scala-lang#jline;2.10.4 ... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[info] Updating {file:/D:/sbt/abc/}sub2... 
[info] Resolving org.scala-lang#scala-library;2.10.4 ... 
[info] Resolving org.scala-lang#scala-compiler;2.10.4 ... 
[info] Resolving org.scala-lang#scala-reflect;2.10.4 ... 
[info] Resolving org.scala-lang#jline;2.10.4 ... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
SubProject 4: 11 
[info] Done updating. 
[info] Packaging D:\sbt\abc\sub1\target\scala-2.10\sub1_2.10-0.1-SNAPSHOT.jar ... 
[info] Done packaging. 
[info] Packaging D:\sbt\abc\target\scala-2.10\abc_2.10-0.1-SNAPSHOT.jar ... 
[info] Done packaging. 
[info] Packaging D:\sbt\abc\sub3\target\scala-2.10\sub3_2.10-0.1-SNAPSHOT.jar ... 
[info] Done packaging. 
[info] Packaging D:\sbt\abc\sub2\target\scala-2.10\sub2_2.10-0.1-SNAPSHOT.jar ... 
[info] Done packaging. 
SubProject 4: 12 
SubProject 4: 13 
SubProject 4: 14 
SubProject 4: 15 
SubProject 4: 16 
SubProject 4: 17 
SubProject 4: 18 
SubProject 4: 19 
SubProject 4: 20 
[info] Updating {file:/D:/sbt/abc/}sub4... 
[info] Resolving org.scala-lang#scala-library;2.10.4 ... 
[info] Resolving org.scala-lang#scala-compiler;2.10.4 ... 
[info] Resolving org.scala-lang#scala-reflect;2.10.4 ... 
[info] Resolving org.scala-lang#jline;2.10.4 ... 
[info] Resolving org.fusesource.jansi#jansi;1.4 ... 
[info] Done updating. 
[info] Packaging D:\sbt\abc\sub4\target\scala-2.10\sub4_2.10-0.1-SNAPSHOT.jar ... 
[info] Done packaging. 

그래서 네 개의 하위 프로젝트가 있습니다. 모든 하위 프로젝트에서 '패키지'작업은 생성 된 작업 (루프에서 인쇄 및 휴면)에 따라 다릅니다. 'package'명령을 실행하면 wach 하위 프로젝트에 대해이 작업이 실행됩니다. 그러나 각각에 대해 종속 작업이 호출됩니다. 출력에서 볼 수 있듯이 이러한 종속 작업은 평소에는 한 번에 2 개만 실행됩니다.

(설정으로 노출 된 적이 있지만, 주어진 시간에 실행되는 작업의 최대 개수뿐만 아니라 내부적으로 설정했다.)

출력에서 ​​세 줄 다음은이 문서에서 다음 문장에 coresponds :

[info] Resolving org.scala-lang#scala-compiler;2.10.4 ... 
SubProject 4: 10 
[info] Resolving org.scala-lang#scala-reflect;2.10.4 ... 

한 하위 프로젝트의 패키징 작업이 다른 하위 프로젝트의 종속 작업과 병렬로 실행된다는 증거를 제공하십시오.

+0

이것은 ** ** ** ** ** ** ** ** 어셈블리 ** 패키지가 아닌 ** 프로젝트입니다. :) 또한, 내가 볼 수있는 프로세스 탐색기 그래프에서 4 높은 CPU로드 영역, 그래서 아카이브 순차적으로 포장됩니다 – Cherry

관련 문제