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

这个想法是添加一个仅存根的库(OrangeExtensions),以便可以在任何平台上编译该项目,而不仅仅是OSX。

是否有可能像这样:

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

最佳答案

您可以为此创建一个自定义dependency configuration(实际上,当您在项目中使用私有(private)宏时,这种情况变得越来越普遍,我希望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和 friend 生成的publish中。

几乎有这样的配置可用:provided配置。除了provided最终以pom.xml范围的依赖关系形式出现在provided中。另外,provided的意思是“运行时本身在运行时提供此功能”,而不是“运行时不需要此功能”。

10-07 15:20