scala之SBT:如何使子项目在开发期间相互依赖,以及在作为 Maven 工件发布时如何相互依赖
yyy_WW
阅读:36
2025-04-02 23:11:03
评论:0
在开发过程中,我使用了以下语法:
lazy val root = project.in(file(".")).dependsOn(runner)
但为了发布,我需要这样做:
libraryDependencies += ... % ... % ...
但我不希望在开发期间存在 libraryDependencies
东西,否则我需要在每次编译时都发布 Local,这很烦人。除了注释掉并在我发布时将其放回原处之外,还有什么好的解决方案吗?
请您参考如下方法:
您不应该将子项目添加为 libraryDependencies
,即使是在 publish
期间也是如此。
现在要发布模块,您可以创建一个简单的 publishSettings
变量:
val publishSettings : Seq[Setting[_]] = Seq(
publishTo := Some("your company releases" at "http://yourrepository"),
credentials += Credentials(
"Repository",
"repositoryUrl",
"username",
"password!"
),
publishMavenStyle := true,
publishArtifact in Test := false,
pomIncludeRepository := { _ => true }
)
lazy val main = Project(..).aggregate(subproject1, subproject2, // etc)
lazy val subproject1 = Project(
settings = Project.defaultSettings ++ publishSettings
);
lazy val subproject2 = Project(
settings = Project.defaultSettings ++ publishSettings
).dependsOn(subproject1)
SBT 现在将在后台自动重新编译依赖项。不要将它们添加为 libraryDependencies
,只将它们放在 dependsOn
中。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。