deployment - How do I publish a fat JAR (JAR with dependencies) using sbt and sbt-release? -


i need build single jar, including dependencies, 1 of sub-projects can used javaagent.

i have multi-module sbt project , particular module lowest level 1 (it's pure java).

can (e.g. sbt-onejar, sbt-proguard or sbt assembly) override how lowest level module packaged?

it looks these tools designed post-publish step, need (replacement or additional) published artefact include dependencies (but 1 module).

update: publishing sbt-assembly instructions single project, , doesn't translate multi-project.

publishing sbt-assembly instructions single project, , doesn't translate multi-project.

people have been publishing fat jar using sbt-assembly & sbt-release without issues. here's blog article 2011: publishing fat jar created sbt-assembly. boils down adding addartifact(artifact(projectname, "assembly"), sbtassembly.assemblykeys.assembly) build.sbt (note blog little out of date assemblykeys member of sbtassembly directly).

for sbt 0.13 , above, prefer use build.sbt multi-projects too, i'd write like:

import assemblykeys._  lazy val commonsettings = seq(   version := "0.1-snapshot",   organization := "com.example",   scalaversion := "2.10.1" )  val app = (project in file("app")).   settings(commonsettings: _*).   settings(assemblysettings: _*).   settings(     artifact in (compile, assembly) ~= { art =>       art.copy(`classifier` = some("assembly"))     }   ).   settings(addartifact(artifact in (compile, assembly), assembly).settings: _*) 

see defining custom artifacts:

addartifact returns sequence of settings (wrapped in settingsdefinition). in full build configuration, usage looks like:

... lazy val proj = project(...)   .settings( addartifact(...).settings : _* ) ... 

Comments

Popular posts from this blog

Why can rails not find a route created by a helper? -

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -