SBT&x27;德彭森';但对于当地的出版业来说
SBT&x27;德彭森';但对于当地的出版业来说,sbt,Sbt,dependsOn在顶级模块上调用所有子模块时,将按正确的顺序编译所有子模块 但是publishLocal命令忽略这些子模块 对于一个多模块sbt项目,有没有办法让它按照正确的顺序编译并发布子模块?一种解决方案是定义一系列专门用于库的设置,例如,commonLibrarySettings,然后通过设置(commonLibrarySettings)在每个可发布的子模块上设置这些设置。例如: lazy val commonSettings = Seq( organization := "com.
dependsOn
在顶级模块上调用所有子模块时,将按正确的顺序编译所有子模块
但是publishLocal
命令忽略这些子模块
对于一个多模块sbt项目,有没有办法让它按照正确的顺序编译并发布子模块?一种解决方案是定义一系列专门用于库的设置,例如,
commonLibrarySettings
,然后通过设置(commonLibrarySettings)在每个可发布的子模块上设置这些设置
。例如:
lazy val commonSettings = Seq(
organization := "com.example",
version := "0.1.0-SNAPSHOT",
scalaVersion := "2.12.6",
...
)
lazy val commonLibrarySettings = Seq(
publishArtifact := true,
publishArtifact in Test := false,
publishTo in ThisBuild := Some(if (isSnapshot.value) Opts.resolver.sonatypeSnapshots else Opts.resolver.sonatypeReleases),
...
)
lazy val root = (project in file("."))
.aggregate(core, submodule1, submodule2)
lazy val core = (project in file("core"))
.settings(commonSettings)
lazy val submodule1 = (project in file("submodule1")) // publishable sub-module
.settings(commonSettings)
.settings(commonLibrarySettings)
lazy val submodule2 = (project in file("submodule2")) // publishable sub-module
.settings(commonSettings)
.settings(commonLibrarySettings)
我认为一个简单的解决方案就是运行
*/publishLocal
,它应该聚合所有子项目(发布也依赖于编译,因此编译+发布是多余的)
但是,如果您的设置更复杂,并且您希望发布一些子项目,但不想发布其他子项目,或者在另一个子项目中聚合一些子项目,那么请按照@mario galic:common settings+.aggregate
中的答案进行操作