您可以通過操縱mappings in (Compile, packageBin)
來包含想要打包的罐子的文件(publish
使用packageBin
的輸出)來獲得所需的結果。這項技術將允許您在jar中包含絕對的任何文件。官方sbt文檔位於:http://www.scala-sbt.org/0.12.3/docs/Howto/package.html#contents
作爲示例,請考慮在您的jar中包含.properties文件的常見情況。假設你需要在打包的jar包的路徑「com/bigco/messages.properties」下包含「messages.properties」。而且可以說,這個文件是在src /主/斯卡拉/ ...你可以添加以下到您的build.sbt:
mappings in (Compile, packageBin) <+= baseDirectory map { base =>
(base/"src"/"main"/"scala"/"com"/"bigco"/"messages.properties") -> "com/bigco/messages.properties"
}
要試圖回答你原來的問題,你可以解壓foo.jar
並添加每個根據其正確的程序包路徑,將class
文件中的一個裝入打包的jar文件中。如此的相似,
mappings in (Compile, packageBin) <+= baseDirectory map { base =>
(base/path/to/unzipped/file.class) -> "path.to.unzipped.file.class"
...
}
或者一些你也許能逃脫簡直包括foo.jar
在包裝罐子像這樣的根:
mappings in (Compile, packageBin) <+= baseDirectory map { base =>
(base/"lib"/"foo.jar") -> "foo.jar"
}
我常常覺得不舒服把代碼我不知道(並且不能)保持在公共存儲庫上。我要麼必須將該組織列爲我的組織,這隱含地說我要爲它承擔責任,或者作爲他們的組織,這意味着他們的軟件包沒有在那裏(以該形式)在網上。乍一看,Bintray解決了這個所有權問題。我一定會看看。 (我沒有想過版本控制問題 - 我想這就是爲什麼一般難以解決的原因) –
你可以嘗試推動foo.jar的作者發佈。 –
3.5年,我遇到了這個問題。 Bintray最終成爲解決這個問題的首選方法嗎? – Synesso