こんにちは、5 つの jar ファイルがあり、sbt を使用してそれらをローカル リポジトリに公開しようとしました。しかし、それらを unmanagedBase ディレクトリに配置すると、lib/
コピーされませんpublishLocal
。それらを公開プロセスに含める簡単な方法はありますか?
現在、maven には同様のソリューションがあります: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
こんにちは、5 つの jar ファイルがあり、sbt を使用してそれらをローカル リポジトリに公開しようとしました。しかし、それらを unmanagedBase ディレクトリに配置すると、lib/
コピーされませんpublishLocal
。それらを公開プロセスに含める簡単な方法はありますか?
現在、maven には同様のソリューションがあります: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
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
代わりにスタンドアロン プロジェクトとして定義します。