5

こんにちは、5 つの jar ファイルがあり、sbt を使用してそれらをローカル リポジトリに公開しようとしました。しかし、それらを unmanagedBase ディレクトリに配置すると、lib/コピーされませんpublishLocal。それらを公開プロセスに含める簡単な方法はありますか?

現在、maven には同様のソリューションがあります: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

4

1 に答える 1

4

1 つのオプションは、公開する各 jar のサブプロジェクトを定義することです。メイン プロジェクトをそれぞれに依存させます。name各サブプロジェクトに適切な、version、およびを与えますorganization。サブプロジェクトごとに、その jar をクラスパス以外の場所に配置し、その jar の出力を作成しますpackageBin

たとえば (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
)

このアプローチでは、jar を変更してsubA/bin/third-party.jarすぐに使用し、その後publishLocalローカルで公開することができます。

プロジェクトの一部にならないようにローカルで個別に公開する場合は、subA代わりにスタンドアロン プロジェクトとして定義します。

于 2013-10-10T13:59:05.833 に答える