使用 sbt 1.0.1 和 scala 2.12.3 ......
我的目录结构:
project/build.properties
project/PackageDist.scala
src/main/scala/{$packageDirs}/MyClass.scala
build.sbt
在 project / PackageDist.scala 中,我有:
import sbt._
import Keys._
import io.RichFile._
import java.io.File
object PackageDist {
lazy val distArtifactRoot = settingKey[File]("The directory to which all distribution artifacts will be written")
lazy val distDirectoryName = settingKey[String]("The name of the root diectory for the distribution")
def distArtifactRootFile : Setting[File] =
distArtifactRoot := target.value / "dist"
def distDirectory : Setting[String] =
distDirectoryName := s"${normalizedName.value}-${version.value}"
}
在 build.sbt 中,我得到了:
lazy val commonSettings = Seq(
organization := "myTestOrg",
scalaVersion := "2.12.3",
version := "0.1.0-SNAPSHOT"
)
lazy val root = ( project in file(".") )
.settings(
name := "package-test",
commonSettings
)
当我运行sbt
时,distArtifactRoot
运行时distDirectoryName
和> settings -V
设置不可用。
我做错了什么?
答案 0 :(得分:1)
您需要对其他sbt文件显示您的设置:
object PackageDist {
lazy val distArtifactRoot = settingKey[File](
"The directory to which all distribution artifacts will be written")
lazy val distDirectoryName =
settingKey[String]("The name of the root diectory for the distribution")
val settings = Seq(
distArtifactRoot := target.value / "dist",
distDirectoryName := s"${normalizedName.value}-${version.value}"
)
}
然后在任何项目中使用它们,如
lazy val root = ( project in file(".") )
.settings(PackageDist.settings: _*) // <-- Add the settings to this project
.settings(
name := "package-test",
)
重新加载sbt并输入dist
+使自动完成功能显示您添加的2个设置。