2013-10-10 7 views
5

안녕하세요. 저는 5 개의 jar 파일을 가지고 있고 sbt를 사용하여 로컬 저장소에 게시하려고했습니다. 그러나 lib/처럼 unmanagedBase 디렉토리에 배치하면 publishLocal으로 복사되지 않습니다. 출판 과정에 그들을 포함시키는 쉬운 방법이 있습니까?sbt (타사)로 jar 파일을 게시하십시오.

현재 받는다는 여기에 비슷한 솔루션을 제공 : http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

답변

4

하나의 옵션은 당신이 게시하려는 각 항아리에 대한 하위 프로젝트를 정의하는 것입니다. 주요 프로젝트가 각각에 달려 있습니다. 각 서브 프로젝트에 적절한 name, versionorganization을 제공하십시오. 각 하위 프로젝트에 대해 클래스 패스가 아닌 다른 곳에 jar 파일을두고 packageBin의 출력을 jar 파일로 만듭니다.

예를 들어

(SBT 0.13 build.sbt)는

lazy val main = project.dependsOn(subA) 

lazy val subA = project.settings(
    name := "third-party", 
    organization := "org.example", 
    version := "1.4", 
    packageBin in Compile := baseDirectory.value/"bin"/"third-party.jar", 
    // if there aren't doc/src jars use the following to 
    // avoid publishing empty jars locally 
    // otherwise, define packageDoc/packageSrc like packageBin 
    publishArtifact in packageDoc := false, 
    publishArtifact in packageSrc := false, 
    // tell sbt to put the jar on main's classpath 
    // and not the (empty) class directory 
    exportJars := true, 
    // set this to not add _<scalaBinaryVersion> to the name 
    crossPaths := true 
) 

이 방법을 사용하면 subA/bin/third-party.jar에 항아리를 변경하고 즉시 사용할 수 및 후속 publishLocal 로컬 게시됩니다 가질 수 있습니다.

로컬로 프로젝트를 구성하지 않고 별도로 게시하려면 독립형 프로젝트로 subA을 정의하십시오.

+0

여러 개의 병을 게시 할 수있는 방법이 있습니까? – hanxue

+0

'java.lang.RuntimeException : 게시를위한 저장소가 지정되지 않았습니다.' – Havnar

+0

@Havnar 게시 할 위치를 정의하고이 대답에서 다루지 않습니다. 다행히도, 그것은 쉬운 부분입니다. – Marcin

관련 문제