gpt4 book ai didi

scala - 使用 SBT 创建多个工件

转载 作者:行者123 更新时间:2023-12-01 11:05:21 25 4
gpt4 key购买 nike

我见过这个问题的近似变体,但没有包含所有有用信息的答案。

使用sbt 0.13.13和sbt-assembly 0.14.3,以及基于http://www.scala-sbt.org/0.13/docs/Multi-Project.html的多项目build.sbt像这样:

lazy val commonSettings = Seq(
version := "2.3.0",
scalaVersion := "2.10.6"
)

lazy val config_jar = (project in file(".")).
settings(commonSettings: _*).
settings(
name := "myapp-config",
test in assembly := {},
assemblyJarName in assembly := "myapp-config.jar",
includeFilter in Compile := "myapp.conf"
)

lazy val build_jar = (project in file(".")).
settings(commonSettings: _*).
settings(
name := "myapp",
excludeFilter in Compile := "myapp.conf",
libraryDependencies += ...
)

这个配置是否足以构建两个独立的 jar?构建每个的完整 sbt 命令到底是什么或者两者都来自命令行?命令 sbt projects 只显示 build_jar,所以缺少一些东西。

最佳答案

评论很少:

  • 您的项目需要指向不同的路径。目前都指向根 (file(".")) 目录。

  • 程序集将可用于两个项目,因此您可以从每个项目调用 assembly 命令。

  • 为什么使用 Scala 2.10?至少(如果你说的是混合 Scala/Java 项目和 Java 7 堆栈),请使用 Scala 2.11.8。

  • 如果你想让一个项目统领所有,你需要有一个聚合项目。从 root 调用 assembly 将可以在其他两个项目中的每一个中进行 assembly(从而创建您的两个 jar)。

所以我会写:

lazy val commonSettings = Seq(
version := "2.3.0",
scalaVersion := "2.10.6"
)

lazy val root = (project in file(".")).aggregate(config_jar, build_jar)

lazy val config_jar = (project in file("config")).
settings(commonSettings: _*).
settings(
name := "myapp-config",
test in assembly := {},
assemblyJarName in assembly := "myapp-config.jar",
includeFilter in Compile := "myapp.conf"
)

lazy val build_jar = (project in file("build")).
dependsOn(config_jar).
settings(commonSettings: _*).
settings(
name := "myapp",
assemblyMergeStrategy in assembly := { file =>
if(file.startsWith("config\\")) MergeStrategy.discard else MergeStrategy.defaultMergeStrategy(file)
},
libraryDependencies += ...
)

关于scala - 使用 SBT 创建多个工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42170237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com