Все, что вам нужно, это определить файл свойств sbt.boot.properties
, который позволит вам:
- переопределить расположение кэша плюща (мне это нужно, потому что иначечасть нашего блуждающего профиля Windows , который строго ограничен в дисковом пространстве в нашем магазине. См. выпуск 74 )
- определение любого другого репозитория Maven, который вы хотите
C:\HOMEWARE\apps\sbt-0.74\sbt.boot.properties
[scala]
version: 2.7.7
# classifiers: sources, javadoc
[app]
org: org.scala-tools.sbt
name: sbt
version: read(sbt.version)
class: sbt.xMain
components: xsbti
cross-versioned: true
classifiers: sources, javadoc
[repositories]
local
my-nexus: http://my.nexus/nexus/content/repositories/scala-tools/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
maven-local
# sbt-db: http://databinder.net/repo/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
# maven-central
# scala-tools-releases
# scala-tools-snapshots
[boot]
directory: project/boot
properties: project/build.properties
prompt-create: Project does not exist, create new project?
prompt-fill: true
quick-option: true
[log]
level: debug
[app-properties]
project.name: quick=set(test), new=prompt(Name)[p], fill=prompt(Name)
project.organization: new=prompt(Organization)[org.vonc]
project.version: quick=set(1.0), new=prompt(Version)[1.0], fill=prompt(Version)[1.0]
build.scala.versions: quick=set(2.8.0.RC2), new=prompt(Scala version)[2.8.0.RC2], fill=prompt(Scala version)[2.8.0.RC2]
sbt.version: quick=set(0.7.4), new=prompt(sbt version)[0.7.4], fill=prompt(sbt version)[0.7.4]
project.scratch: quick=set(true)
project.initialize: quick=set(true), new=set(true)
[ivy]
cache-directory: C:\HOMEWARE\projects\.ivy2\cache
Примечание: этот sbt.boot.properties
файл основан на:
Я прокомментировал любое определение external Maven-репозитория и добавил ссылку на мое собственное хранилище Nexus Maven.
Модуль запуска можно настроить одним из следующих способов в порядке возрастания приоритета:
- Заменить файл
/sbt/sbt.boot.properties
в jar
. - Поместите файл конфигурации с именем
sbt.boot.properties
в путь к классам.Поместите его в корневой каталог classpath без префикса /sbt
. - Укажите расположение альтернативной конфигурации в командной строке.Это можно сделать следующим образом:
- либо указав расположение в качестве системного свойства
sbt.boot.properties
- , либо в качестве первого аргумента для модуля запуска с префиксом '
@
'.
Системное свойство имеет более низкий приоритет.
Разрешение относительного пути:
- первая попытка для текущего рабочего каталога,
- затем по домашнему каталогу пользователя,
- , а затем по каталогу, содержащему jar-файл запуска.
Если ни одна из этих попыток не увенчалась успехом, генерируется ошибка.
Определите оболочку sbt.bat (чтобы быть уверенным в указании вашего sbt.boot.properties
) как:
C:\HOMEWARE>more C:\HOMEWARE\bin\sbt.BAT
@echo off
set t=%~dp0
set adp0=%t:C:\="%"
set SBT_DIR=%adp0%..\apps\sbt-0.74
dir C:\%SBT_DIR%\sbt-launch-0.7.4.jar
# if needed, add your proxy settings
set PROXY_OPTIONS=-Dhttp.proxyHost=my.proxy -Dhttp.proxyPort=80xx -Dhttp.proxyUser=auser -Dhttp.proxyPassword=yyyy
set JAVA_OPTIONS=-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx512M -cp C:\HOMEWARE\apps\sbt-0.74\sbt-launch-0.7.4
set SBT_BOOT_PROPERTIES=-Dsbt.boot.properties="sbt.boot.properties"
cmd /C C:\HOMEWARE\apps\jdk4eclipse\bin\java.exe %PROXY_OPTIONS% %JAVA_OPTIONS% %SBT_BOOT_PROPERTIES% -jar C:\HOMEWARE\apps\sbt-0.74\sbt-launch-0.7.4.jar %*
И ваш sbt будет загружать артефакты только из:
- вашего Nexus
- ваше местное хранилище Maven.
Только что протестировал дома со старым Nexus с открытым исходным кодом 1.6, который у меня был, java 1.6, sbt07.4
C:\Prog\Java\jdk1.6.0_18\jre\bin\java -Xmx512M -Dsbt.boot.properties=sbt.boot.properties - jar "c:\Prog\Scala\sbt\sbt-launch-0.7.4.jar"
Это дает:
[success] Build completed successfully.
C:\Prog\Scala\tests\pp>sbt
Getting Scala 2.8.0 ...
downloading http://localhost:8081/nexus/content/repositories/scala/org/scala-lang/scala-compiler/2.8.0/scala-compiler-2.
8.0.jar ...
[SUCCESSFUL ] org.scala-lang#scala-compiler;2.8.0!scala-compiler.jar (311ms)
downloading http://localhost:8081/nexus/content/repositories/scala/org/scala-lang/scala-library/2.8.0/scala-library-2.8.
0.jar ...
[SUCCESSFUL ] org.scala-lang#scala-library;2.8.0!scala-library.jar (185ms)
:: retrieving :: org.scala-tools.sbt#boot-scala
confs: [default]
2 artifacts copied, 0 already retrieved (14484kB/167ms)
[info] Building project test 0.1 against Scala 2.8.0
[info] using sbt.DefaultProject with sbt 0.7.4 and Scala 2.7.7
Если я попробую смешное значение в файле sbt.boot.properties:
C:\Prog\Scala\tests\pp>sbt
Getting Scala 2.9.7 ...
:: problems summary ::
:::: WARNINGS
module not found: org.scala-lang#scala-compiler;2.9.7
==== nexus: tried
http://localhost:8081/nexus/content/repositories/scala/org/scala-lang/scala-compiler/2.9.7/scala-compiler-2.9.7.pom
-- artifact org.scala-lang#scala-compiler;2.9.7!scala-compiler.jar:
http://localhost:8081/nexus/content/repositories/scala/org/scala-lang/scala-compiler/2.9.7/scala-compiler-2.9.7.jar
Таким образом, оно ограничивается двумя репо, которые я определил:
[repositories]
nexus: http://localhost:8081/nexus/content/repositories/scala
nexus2: http://localhost:8081/nexus/content/repositories/scala, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
(я прокомментировал все остальное: local
, maven-local
, ...)
Если я прокомментирую все репозитории и поставлю смешное значение (2.7.9) для версии scala в sbt.boot.properties
я получаю (как и ОП)
C:\Prog\Scala\tests\pp>sbt
Error during sbt execution: No repositories defined.
Если я поставлю 2.7.7 (при этом все еще имея все репопрокомментировал), да, это не сгенерирует ошибку:
C:\Prog\Scala\tests\pp>sbt
[info] Building project test 0.1 against Scala 2.8.0
[info] using sbt.DefaultProject with sbt 0.7.4 and Scala 2.7.7
BuЭто происходит только потому, что он уже загрузил scala2.8.0 во время моих предыдущих попыток.
Если я удалю эту библиотеку из моего каталога project/boot
, то будет выдано исключение:
[info] using sbt.DefaultProject with sbt 0.7.4 and Scala 2.7.7
> C:\Prog\Scala\tests\pp>sbt
Error during sbt execution: No repositories defined.
at xsbt.boot.Pre$.error(Pre.scala:18)
at xsbt.boot.Update.addResolvers(Update.scala:197)
...
at xsbt.boot.Boot$.main(Boot.scala:15)
at xsbt.boot.Boot.main(Boot.scala)
Error loading project: Error during sbt execution: No repositories defined.