リポジトリーで使用できないライブラリーをjar(sbtプロジェクトではなく、ソースコードなし、jarファイルのみ)にコンパイルしています。
libraryDependencies += "org.xxx" % "xxx" % "1.0"
表記を使用して依存関係を追加できるように、jarをローカルに公開する方法はありますか? (ファイルをlib
フォルダーにコピーしてプロジェクトに追加する方法は既に知っています。)
tl; dr私はそれをsbtの機能ではなくトリックと呼んでいます。あなたは警告されました。
公開するfile.jar
があるとしましょう。 anyビルドツールの場合と同様に、sbtを含め、最終的にアーティファクト(ほとんどの場合jarファイル)を作成するタスクを実行します。プロジェクト。
プロジェクトは、アーティファクトの座標を設定します。
トリックは、sbtが環境のセットアップに必要なものを活用することです環境(=座標)jarをパブリッシュするには(そうでなければ、コマンドラインでそれらを指定する必要がありますが、非常に使いやすいかどうかはわかりません).
必要な設定-organization
、name
、version
、場合によってはscalaVersion
を使用してbuild.sbt
を作成し、jarファイルがある場所に保存します。
organization := "org.abc"
name := "my-own-publish-jar"
version := "1.0.0"
scalaVersion := "2.11.3"
packageBin in Compile := file(s"${name.value}_${scalaBinaryVersion.value}.jar")
お気付きかもしれませんが、ビルドによってcompile:package
タスクがjarファイルを指すように変更されます。
それでおしまい。
sbt publishLocal
を実行すると、jarファイルはIvy2ローカルリポジトリ、つまり~/.ivy2/local/org.abc/my-own-publish-jar_2.11/1.0.0/jars/my-own-publish-jar_2.11.jar
にあるはずです。
protipコマンドラインで指定された座標を使用してプラグインを作成することは、非常に簡単になりました。
wetElephant.jar
およびwetElephant-javadoc.jar
ファイルがあり、ローカルリポジトリに公開し、libraryDependencies
sbttaskKey。
必要なことは次のとおりです。
wetElephant.jar
およびwetElephant-javadoc.jar
)をmodules\wetElephant
に入れますbuild.sbtファイル(またはBuild.scalaファイルでプロジェクトを定義します)
lazy val stolenLib = project
.in(file("modules/wetElephant"))
.settings(
organization := "com.stolenLibs",
name := "wetElephant",
version := "0.1-IDonKnow",
crossPaths := false, //don't add scala version to this artifacts in repo
publishMavenStyle := true,
autoScalaLibrary := false, //don't attach scala libs as dependencies
description := "project for publishing dependency to maven repo, use 'sbt publishLocal' to install it",
packageBin in Compile := baseDirectory.value / s"${name.value}.jar",
packageDoc in Compile := baseDirectory.value / s"${name.value}-javadoc.jar"
)
Sbt/activatorからpublishLocal
タスクを呼び出します(アクティベーターから実行し、proejct名をプレフィックスとして付けました):
./activator wetElephant/publishLocal
...出力を読んで、何がどこで発行されたかを確認します。
/cygdrive/d/devstation-workspace/projects/m4l-patches 1
[info] Loading project definition from D:\devstation-workspace\projects\m4l-patches\project
[info] Set current project to m4l-patches (in build file:/D:/devstation-workspace/projects/m4l-patches/)
[info] Updating {file:/D:/devstation-workspace/projects/m4l-patches/}wetElephant...
[info] Packaging D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\wetelephant-0.1-IDonKnow-sources.jar ...
[info] Done packaging.
[info] Wrote D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\wetelephant-0.1-IDonKnow.pom
[info] Resolving org.fusesource.jansi#jansi;1.4 ...4 ....
[info] Done updating.
[info] :: delivering :: com.stolenLibs#wetelephant;0.1-IDonKnow :: 0.1-IDonKnow :: release :: Sun Dec 20 20:09:24 CET 2015
[info] delivering ivy file to D:\devstation-workspace\projects\m4l-patches\modules\wetElephant\target\ivy-0.1-IDonKnow.xml
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\poms\wetelephant.pom
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\jars\wetelephant.jar
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\srcs\wetelephant-sources.jar
[info] published wetelephant to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\docs\wetelephant-javadoc.jar
[info] published ivy to C:\Users\pawell\.ivy2\local\com.stolenLibs\wetelephant\0.1-IDonKnow\ivys\ivy.xml
[success] Total time: 1 s, completed 2015-12-20 20:09:24
オプションで、これらのライブラリを別のプロジェクトで使用します
libraryDependencies += "com.stolenLibs" % "wetElephant" % "0.1-IDontKnow"
免責事項:ソースを公開しない方法はわかりません...
ここに、数か月前にsbtアーティファクトをMavenリポジトリー(ローカルおよびリモート)にプッシュするためにフォローしたブログ投稿があります。