如何使用 scala sbt 构建多个 jar 文件
Posted
技术标签:
【中文标题】如何使用 scala sbt 构建多个 jar 文件【英文标题】:How do I build multiple jar files using scala sbt 【发布时间】:2011-09-15 22:13:11 【问题描述】:在我的项目中,我有以下结构:
src/
插件/
\__ mpc
|__ 操作
我将 src 中的所有 scala 文件编译成一个 jar(主程序),然后 plugins 中的每个子目录都包含 scala 文件,这些文件应该构建一个由主程序加载的插件 jar(所以一个 jar 用于 plugins/ mpc 和另一个用于插件/操作)。
在根目录下我有一个 build.sbt:
名称 := "mrtoms"
组织 := "chilon"
版本 := "0.1"
libraryDependencies ++= Seq("commons-httpclient" % "commons-httpclient" % "3.1")
crossPaths := false
scalaHome := Some(file("/usr/share/scala"))
目标 := 文件(“项目/目标”)
编译中的scalaSource
mainClass := Some("org.chilon.mrtoms.MrToms")
从 src 中的文件构建我的主 jar 文件就好了。如何在每个插件目录中为源文件添加 jars?
【问题讨论】:
【参考方案1】:看来您需要完整配置(目前您使用的是基本配置):
https://github.com/harrah/xsbt/wiki/Full-Configuration
在您的情况下,root
项目是您的主要 jar。然后每个插件都应该有它自己的项目,根项目聚合。完整的配置可以是这样的:
import sbt._
object MyBuild extends Build
lazy val root = Project("root", file(".")) aggregate (mpc, oper)
lazy val mpc = Project("mpc", file("plugins/mpc")) dependsOn(pluginApi)
lazy val oper = Project("sub2", file("plugins/oper")) dependsOn(pluginApi)
lazy val pluginApi = Project("pluginApi", file("plugins/api"))
【讨论】:
非常感谢您的帮助:) 在我的情况下,我添加了 root.. 它什么都不编译.. 只是为了聚合到子项目。然后所有的子项目都依赖于那里的插件子项目。根项目构建了一个空 jar,scala 编译器在第一次编译时不断给出“内存不足”警告;)但除此之外它看起来不错。 似乎文档在此期间已经移动(并希望变得更好)。 scala-sbt.org/release/tutorial/Full-Def.html 或者这个:scala-sbt.org/0.13/tutorial/Multi-Project.html以上是关于如何使用 scala sbt 构建多个 jar 文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 scala sbt 构建一个独立的 jar 以合并到一个 android 项目中
如何从scala对象中的sbt ProjectPlugin.scala加载对象
Sbt 0.13 插件依赖和 scala-reflect.jar 版本冲突