【问题标题】:How to "package" some modules to jars and others to wars in multi-module build with single task?如何在单个任务的多模块构建中将一些模块“打包”到 jars 和其他模块到战争?
【发布时间】:2015-02-22 06:45:52
【问题描述】:
我使用package 任务(来自xsbt-web-plugin)将项目打包到战争中,并使用assembly 任务(来自sbt-assembly)将项目打包到jar。
我有一个多模块构建,一些模块被打包到战争中,一些被打包到 jars 中。
我想设置构建以执行assembly 任务并且:
- Jar 模块打包成 jar 文件
- 战争模块被打包到战争文件中
如何在执行assembly任务的同时为war项目执行package任务?
【问题讨论】:
标签:
sbt
sbt-assembly
xsbt-web-plugin
【解决方案1】:
package 任务和assembly 任务都评估为File 类型,因此正如@James 评论的那样,您应该能够在webapp 项目中重新连接assembly 任务以运行package。
lazy val commonSettings = Seq(
scalaVersion := "2.11.4"
)
lazy val webappAssembly = Seq(
assembly := packageWar.value
)
lazy val root = (project in file(".")).
aggregate(app, webapp).
settings(commonSettings: _*)
lazy val app = (project in file("app")).
settings(commonSettings: _*)
lazy val webapp = (project in file("webapp")).
settings(commonSettings ++ jetty() ++ webappAssembly: _*).
settings(
libraryDependencies += "javax.servlet" % "javax.servlet-api" % "3.0.1" % "provided"
)