2013-10-10 13 views

Odpowiedz

4

Jedną z opcji jest zdefiniowanie podprojektu dla każdego słoika, które mają być opublikowane. Niech twój główny projekt zależy od każdego. Daj każdemu podprojektowi odpowiednie name, version i oraz . Dla każdego podprojektu umieść jego słoik gdzieś nie na ścieżce klasy i spraw, aby wyjście o wartości packageBin było tym słojem.

Na przykład (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 
) 

Takie podejście pozwala zmienić słoik w subA/bin/third-party.jar i mają być stosowane bezpośrednio i późniejsza publishLocal będzie go opublikować lokalnie.

Jeśli wolisz osobne publikowanie lokalnie, aby nie było częścią projektu, zdefiniuj subA jako samodzielny projekt.

+0

Czy istnieje sposób na opublikowanie wielu słoików? – hanxue

+0

Otrzymuję "java.lang.RuntimeException: Repozytorium do publikacji nie jest określone" – Havnar

+0

@Havnar Poprawnie, określając, gdzie publikować, nie jest uwzględniona w tej odpowiedzi. Na szczęście to jest łatwa część. – Marcin

Powiązane problemy