使用sbt如何构建胖依赖项jar和小应用程序jar?

时间:2018-12-14 20:49:27

标签: sbt sbt-assembly

我正在尝试使用akka-http创建一个Web项目,这个想法是要有2个jar:

  1. 具有所有依赖项的大型Uber jar
  2. 一个只有应用程序代码的小罐子。

使用它,在开发时,我只需要用应用程序代码更新小罐子。只有在更新依赖项时,我才需要重新运行依赖项。

为此,我使用了以下设置:

lazy val commonSettings = Seq(
  name := "akka-http",
  version := "0.1",
  scalaVersion := "2.11.7"
)

lazy val deps = (project in file("deps"))
     .settings(
    libraryDependencies ++= Seq(
           "com.typesafe.akka" %% "akka-http" % "10.1.5",
           "com.typesafe.akka" %% "akka-http-testkit" % "10.1.5" % Test
        )
    , assemblyJarName in assembly := "app-dependencies"
     )

lazy val web = (project in file("web")).dependsOn(deps)
     .settings(commonSettings
     , assemblyJarName in assembly := "web-app")

但是在IntelliJ中导入build.sbt文件时,它会失败。 (Deps是一个现有但空的目录。)

::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: deps#deps_2.11;0.1.0-SNAPSHOT: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

我认为或假定在开发阶段不需要组装相关项目?它是为此使用的正确策略,还是应该在提供范围的情况下使所有web可用的库依赖关系可用?感觉有点像代码重复吗?

0 个答案:

没有答案