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

17

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

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

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

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

?

    
задан 0__ 02.02.2014 в 20:46
источник

1 ответ

42

Вы можете создать пользовательскую конфигурацию зависимостей для этого (на самом деле, это становится настолько распространенным, когда вы используете частные макросы в своем проекте, я хочу, чтобы 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 означает «сама среда выполнения предоставляет это во время выполнения», а не «это не требуется во время выполнения».

    
ответ дан gourlaysama 02.02.2014 в 23:14
источник