在sbt中添加仅编译时依赖项

时间:2014-02-02 19:46:18

标签: scala maven sbt dependency-management

我想为sbt项目添加一个依赖项,该项目仅用于编译。它既不应该在运行时类路径上,也不应该在已发布的POM中以任何形式显示。

我们的想法是添加一个仅存根库(OrangeExtensions),以便可以在任何平台上编译项目,而不仅仅是OS X.

是否有可能以某种方式:

libraryDependencies += "com.yuvimasory" % "orange-extensions" % "1.3.0" % ???

1 个答案:

答案 0 :(得分:49)

您可以为此创建一个自定义dependency configuration(实际上,当您在项目中使用私有宏时,这种情况变得非常普遍,我希望SBT提供一个)。

build.sbt

// a 'compileonly' configuation
ivyConfigurations += config("compileonly").hide

// some compileonly dependency
libraryDependencies += "commons-io" % "commons-io" % "2.4" % "compileonly"

// appending everything from 'compileonly' to unmanagedClasspath
unmanagedClasspath in Compile ++= 
  update.value.select(configurationFilter("compileonly"))

该依赖关系不会出现在pom.xml和朋友生成的publish中。

几乎就是这样的配置:provided配置。除provided作为pom.xml范围的依赖关系provided之外。此外,provided表示“运行时本身在运行时提供此功能”,而不是“运行时不需要”。