Settings.scala我的大型SBT项目中有一个单独的文件,其中包含以下内容:
lazy val commonSettings = Seq(
// ... lots of settings
publishTo :=
Some("Sonatype Nexus Repository Manager" at
"http://my.company.nexus/content/repositories/releases/"),
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials"),
publishMavenStyle := true,
crossScalaVersions := Seq("2.10.6"),
// ... lots of other settings
)
Run Code Online (Sandbox Code Playgroud)
现在我的所有项目build.sbt都定义如下:
lazy val aProject =
project.in(file("somewhere/aProject")).
settings(commonSettings).
settings(
// project specific settings
)
Run Code Online (Sandbox Code Playgroud)
当我现在这样做
sbt "+ publish"
Run Code Online (Sandbox Code Playgroud)
我看到我的所有工件都已发布,当我查看我的Nexus时,他们就在那里,我也可以将它们用作依赖项等,因此发布工作,但我最后得到以下内容:
java.lang.RuntimeException: Repository for publishing is not specified.
at scala.sys.package$.error(package.scala:27)
at sbt.Classpaths$$anonfun$getPublishTo$1.apply(Defaults.scala:1470)
at sbt.Classpaths$$anonfun$getPublishTo$1.apply(Defaults.scala:1470)
at scala.Option.getOrElse(Option.scala:120)
at sbt.Classpaths$.getPublishTo(Defaults.scala:1470)
at sbt.Classpaths$$anonfun$59.apply(Defaults.scala:1150)
at …Run Code Online (Sandbox Code Playgroud) 从一些sbt文档(例如范围),我看到:
{.}/*:name
Run Code Online (Sandbox Code Playgroud)
意思name是entire build(name in ThisBuild用来定义它)
*/*:name
Run Code Online (Sandbox Code Playgroud)
意思name是global project(name in Global用来定义它)
(PS:我忽略了配置部分*:)
但是,我仍然不知道它们之间有什么区别,它们对我来说似乎完全一样.
我能用一个而不是另一个做任何事吗?