2013-11-22 3 views
1

Я клонировал репозиторий из GitHub на свой локальный компьютер, изменил его, чтобы он соответствовал моим потребностям, и теперь я буду использовать его в своем проекте. Думаю, я должен использовать файл .jar. Однако такого файла нет.Использование локального хранилища Git в качестве зависимости в проекте SBT?

Должен ли я сгенерировать его сам?

Кроме того, как я могу обратиться к нему? Я не хочу копировать его в папку /lib, потому что я продолжаю работать над клонированным проектом. Как я узнал, что я должен использовать это:

resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository" 

Однако, у меня нет файла build.sbt, у меня есть файл только простой файл SCALA под названием Build.scala и это не представляется возможным использовать код, указанный выше в нем.

Кроме того, он говорит /.m2/repository, но откуда он знает, где находится файл .jar в этом репозитории?

+2

SBT использует локальный репозиторий кеша плюща и следует структуре проекта на основе maven. Посмотрите в '~/.ivy2/cache' для встроенных банок. Вы также можете посмотреть [выборки зависимостей от git] (http://stackoverflow.com/q/7550376/205936) –

+0

Дубликат http://stackoverflow.com/q/20083564/1305344 и http: // stackoverflow .com/q/7550376/1305344 –

+0

@JacekLaskowski, это не потому, что этот вопрос касается не локальной зависимости. –

ответ

4

Поскольку проект происходит от GitHub, я предполагаю, что это проект git. Решение заключается в использовании RootProject с git URI в качестве ссылки на ваш клонированный проект git.

Скажите, что вы клонировали проект до /Users/jacek/sandbox/so/sbt-git/git-repo (как я сделал в Can SBT refresh git uri dependency (always or on demand)?).

Сделайте git log, чтобы узнать последнюю фиксацию, которую вы хотите использовать, и использовать ее в URI git проекта с ссылкой в ​​SBT - в dependsOn.

Учитывая последний коммит является a221379c7f82e5cc089cbf9347d473ef58255bb2, build.sbt может выглядеть следующим образом:

lazy val v = "a221379c7f82e5cc089cbf9347d473ef58255bb2" 

lazy val g = RootProject(uri(s"git:file:///Users/jacek/sandbox/so/sbt-git/git-repo/#$v")) 

lazy val root = project in file(".") dependsOn g 

Также можно выйти из коммита идентификатор и идти в ногу с развитием в ссылочного проекта мерзавца после того как она обновляется git fetch с последующим по git merge, как описано в git-pull(1) Manual Page.

+0

Я применил ваше решение, оно компилируется, но я, наконец, получаю ClassNotFoundException. Любая идея почему? – pommedeterresautee

+0

Что это за проект - maven, gradle, sbt? Выполняет ли проект стандартную структуру каталогов Maven/sbt? На самом деле, даже при правильной настройке проектов вы можете столкнуться с CNFE из-за ошибки в проекте (проектах). Не могли бы вы поделиться проектом через github? –

Смежные вопросы