Добавьте зависимость только от времени компиляции в sbt
Я хотел бы добавить зависимость к проекту sbt, который используется только для компиляции. Он не должен находиться в пути к классу среды выполнения и не должен быть виден в любой форме в опубликованном POM.
Идея состоит в том, чтобы добавить только заглушку библиотеки (OrangeExtensions ), так что проект может быть скомпилирован на любой платформе, а не только OS X.
Возможно ли это как-то так:
libraryDependencies += "com.yuvimasory" % "orange-extensions" % "1.3.0" % ???
?
1 ответ:
Можно создать пользовательскую конфигурацию зависимостей Для этого (на самом деле, это становится настолько распространенным, когда вы используете частные макросы в своем проекте, я бы хотел, чтобы 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
означает "сама среда выполнения обеспечивает это во время выполнения", а не"это не нужно во время выполнения".