하나의 옵션은 당신이 게시하려는 각 항아리에 대한 하위 프로젝트를 정의하는 것입니다. 주요 프로젝트가 각각에 달려 있습니다. 각 서브 프로젝트에 적절한 name
, version
및 organization
을 제공하십시오. 각 하위 프로젝트에 대해 클래스 패스가 아닌 다른 곳에 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
을 정의하십시오.
여러 개의 병을 게시 할 수있는 방법이 있습니까? – hanxue
'java.lang.RuntimeException : 게시를위한 저장소가 지정되지 않았습니다.' – Havnar
@Havnar 게시 할 위치를 정의하고이 대답에서 다루지 않습니다. 다행히도, 그것은 쉬운 부분입니다. – Marcin