2013-10-10 11 views
5

こんにちは私は5つのjarファイルを持ち、sbtを使ってそれらをローカルリポジトリに公開しようとしました。 しかし、それらをlib/のようなunmanagedBaseディレクトリに置くと、publishLocalでコピーされません。出版プロセスにそれらを含める簡単な方法はありますか?sbt(サードパーティ製)でjarファイルを公開

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

答えて

4

一つのオプションを使用すると、公開したい各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をスタンドアロンプ​​ロジェクトとして定義します。

+0

複数のjarを公開する方法はありますか? – hanxue

+0

私は 'java.lang.RuntimeExceptionを取得しています:公開のリポジトリが指定されていません' – Havnar

+0

@Havnar公開する場所を定義していますが、この回答では説明されていません。幸いにも、それは簡単な部分です。 – Marcin

関連する問題