我想将一个依赖项添加到仅用于编译的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
的意思是“运行时本身在运行时提供此功能”,而不是“运行时不需要此功能”。