2013-11-13 2 views
12

Я хочу организовать свои пакеты Scala и полюбить, как Python решает эту проблему с pip.Есть ли pip/easy_install для Scala?

Вы можете порекомендовать аналогичный инструмент для управления пакетами Scala?

EDIT: Ищу для легкой установки новых пакетов со всеми его зависимостями, как

>>> pip install <a_package> # installs a_package with all dependencies. 
+0

Моя первая мысль состоит в том, что некоторая комбинация Maven/SBT выполнит то, что вы хотите, но было бы полезно, если бы вы указали, что именно 'pip' делает, что вы хотите подражать. –

+4

Это отличный вопрос, не могу поверить этим модам ... – coleifer

ответ

11

Наиболее непосредственно аналогичной вероятно Scala Build Tool. В частности, Library Dependencies. Экосистема Java включает в себя множество библиотек и инструменты сборки, Scala построен на Java. Таким образом, вы получаете возможность использовать такие вещи, как -

Кроме того, поскольку все выполняется в виртуальной машине; нет установки «системы». Вы можете начать с вашего CLASSPATH и для более подробного изучения class loading.

#!/bin/sh 
# From http://www.scalaclass.com/node/10 - CLASSPATH 
L=`dirname $0`/../lib 
cp=`echo $L/*.jar|sed 's/ /:/g'` 
exec scala -classpath "$cp" "$0" "[email protected]" 
!# 
import com.my.Goodness 
val goodness = new Goodness 
world.hello 
8

Pythonistas устанавливает системные пакеты, которые затем используются всеми проектами python. Это приводит к множеству проблем, которые пытается решить virtualenv. Ребята из Scala и вообще люди Java имеют определение для каждого проекта, которое написано для инструмента управления зависимостями: mvn (xml), sbt (scala), gradle (groovy) и т. Д.

Большинство этих инструментов имеют системно- так что обычно он загружает некоторую версию зависимости только один раз, а затем помещает ее в определенное место на вашем диске. Когда вам нужно запустить/собрать вашу программу java или scala, она создаст так называемую переменную CLASSPATH, которая состоит из патчей в требуемые библиотеки. Затем переменная CLASSPATH (aka PYTHONPATH в мире python) используется средой выполнения для поиска необходимых частей. Опять же, CLASSPATH сильно варьируется от проекта к проекту, тогда как PYTHONPATH является довольно постоянным. Я действительно верю, что могут быть инструменты, которые выполняют ту же самую работу, но это не принято в мире JVM.

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