Некоторая информация предоставлена на странице Classpaths , но она не очень ясна или детальна.Информация также доступна с помощью команды inspect
, описанной на странице Проверка настроек .
В основном, для конфигурации X, в краткой записи:
// complete, exported classpath, such as used by
// 'run', 'test', 'console', and the war task
fullClasspath in X =
dependencyClasspath in X ++ exportedProducts in X
// classpath only containing dependencies,
// used by 'compile' or 'console-quick', for example
dependencyClasspath in X =
externalDependencyClasspath in X ++ internalDependencyClasspath in X
// classpath containing only dependencies external to the build
// (as opposed to the inter-project dependencies in internalDependencyClasspath)
externalDependencyClasspath in X =
unmanagedClasspath in X ++ managedClasspath in X
// the manually provided classpath
unmanagedClasspath in X =
unmanagedJars for X and all configurations X extends, transitively
Итак, обычно, когда вы хотите добавить неуправляемые библиотеки, вы добавляете их в unmanagedJars
.Например, если вы добавите библиотеки в unmanagedJars in Compile
, то sbt будет правильно включать библиотеки в unmanagedClasspath
для Compile
, Runtime
и Test
.
Однако вы хотите явно контролироватьВот.Добавляйте библиотеки только в unmanagedClasspath
, в котором вы хотите установить файлы jar, а это unmanagedClasspath in Compile
.Например, в sbt 0.11.0 +:
unmanagedClasspath in Compile <++= baseDirectory map { base =>
val lib = base / "lib"
Seq(
lib / "testng.jar",
lib / "gwt/2.3/gwt-user.jar",
lib / "jetty/servlet.jar"
)
}
Предполагая, что плагин войны использует путь к классу Runtime, эти файлы будут отображаться только на пути к классам компиляции, а не на войне.