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


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

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

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

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

?

1 17

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