Подтвердить что ты не робот

Добавить только время зависимости времени компиляции в sbt

Я хотел бы добавить зависимость к проекту sbt, который используется только для компиляции. Он также не должен находиться в пути класса времени выполнения и не должен быть видимым в любой форме в опубликованной POM.

Идея состоит в том, чтобы добавить только тупиковую библиотеку (OrangeExtensions), чтобы проект мог быть скомпилирован на любой платформе не только OS X.

Возможно ли это как-то:

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

?

4b9b3361

Ответ 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 означает "сама среда выполнения предоставляет это во время выполнения", а не "это не требуется во время выполнения".