Eine Option ist ein Teilprojekt für jedes Glas zu definieren, die Sie veröffentlicht werden sollen. Haben Sie Ihr Hauptprojekt von jedem abhängen. Geben Sie jedem Teilprojekt eine geeignete name
, version
und organization
. Stellen Sie für jedes Teilprojekt seinen jar irgendwo nicht auf den Klassenpfad und machen Sie die Ausgabe von packageBin
, dass jar.
Zum Beispiel (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
)
Dieser Ansatz ermöglicht es Ihnen, das Glas in subA/bin/third-party.jar
zu ändern und haben es sofort und eine nachfolgende publishLocal
verwendet werden, wird es lokal veröffentlichen.
Wenn Sie es lieber lokal veröffentlichen möchten, damit es nicht Teil des Projekts ist, definieren Sie stattdessen subA
als eigenständiges Projekt.
Gibt es eine Möglichkeit, mehrere Gläser zu veröffentlichen? – hanxue
Ich erhalte 'java.lang.RuntimeException: Repository für die Veröffentlichung wurde nicht angegeben' – Havnar
@Havnar Korrekt, definiert, wo zu veröffentlichen ist nicht in dieser Antwort abgedeckt. Zum Glück ist das der einfache Teil. – Marcin