一つのオプションを使用すると、公開したい各jarファイルのためのサブプロジェクトを定義することです。主なプロジェクトはそれぞれに依存してください。各サブプロジェクトに適切な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
にjarファイルを変更し、それをすぐに使用すること持つことができ、その後のpublishLocal
は、それをローカルに公開します。
プロジェクトの一部ではないようにローカルに別々に公開する場合は、代わりにsubA
をスタンドアロンプロジェクトとして定義します。
複数のjarを公開する方法はありますか? – hanxue
私は 'java.lang.RuntimeExceptionを取得しています:公開のリポジトリが指定されていません' – Havnar
@Havnar公開する場所を定義していますが、この回答では説明されていません。幸いにも、それは簡単な部分です。 – Marcin