Scala IDE и путь к классам

У меня есть проект Scala, которым я делюсь через git между двумя (Windows) машинами. Я настроил их с помощью SBT и sbt-eclipse, поэтому я могу редактировать и тестировать в eclipse или создавать и тестировать из командной строки.

К сожалению, мое имя пользователя (и, следовательно, каталог профиля пользователя) отличается на разных машинах. Это означает, что когда sbt извлекает зависимости, он помещает их в разные базовые каталоги на двух платформах. Это не было бы проблемой, за исключением того, что полное имя пути жестко закодировано в файле eclipse .classpath из sbt-eclipse. Это означает, что мне нужно перезапустить задачу «затмения», когда я делаю запрос на моей «текущей» машине.

Это должно быть еще хуже для других, которые делают такие вещи в команде. Как это обычно лечится? Я бы предпочел сделать пул на любой машине, даже из eclipse, и сразу же приступить к работе.


person melston    schedule 30.07.2014    source источник


Ответы (1)


Я настоятельно рекомендую удалить файлы, сгенерированные eclipse-sbt (и все другие сгенерированные файлы), из git. Каждая машина будет иметь свой собственный файл .classpath, который создается на этой машине, который создается на этой машине для этой машины, и может быть перегенерирован, когда вы хотите/нужно. Ваши файлы проекта build.sbt должны быть в git, поэтому, когда вы подключаетесь к каждой машине, она будет иметь обновленную конфигурацию, и вы можете просто запустить sbt eclipse только при изменении зависимости.

На самом деле, вам всегда следует избегать создания файлов в системе контроля версий. Имейте в своем проекте git только важные вещи и генерируйте остальные по мере необходимости.

person dhg    schedule 30.07.2014
comment
ХОРОШО. Что объясняет его. Я не осознавал проблему, так как всегда (во всяком случае, в java-проектах) просто включал файлы .classpath и т. д. Я предполагаю, что файл .project все еще в порядке, верно? - person melston; 31.07.2014
comment
Я бы тоже не стал включать .project. Оба они генерируются командой sbt eclipse, и, следовательно, нет никакой ценности в том, чтобы иметь их в git (но это потенциально недостатки, если есть конфликты). Я также не стал бы включать эти файлы в проект Java по тем же причинам. - person dhg; 31.07.2014
comment
Это означает, что мне действительно нужно изменить то, как я работаю с eclipse в проектах Scala. Я больше не могу просто импортировать из git, так как он не будет включать в себя полный проект. Мне нужно импортировать, перейти в командную строку, выполнить sbt eclipse, а затем обновить рабочее пространство. Это покрывает это? О, и добавьте .classpath и .project в мой файл .gitignore. - person melston; 31.07.2014
comment
Ага. Это правильный подход к делу. Хотя не должно быть большой проблемой запустить одну команду из командной строки, когда вы настраиваете проект на новой рабочей станции; вы должны сделать это в любом случае, чтобы загрузить файлы зависимостей. - person dhg; 31.07.2014