2011-10-10 4 views
5

Clojure REPL?에서 이전에 지정되지 않은 Maven 종속성을 다운로드하고 설치할 수 있습니까?Clojure REPL에서 종속성을 동적으로로드합니다.

일부 테스트 또는 시각화 도구에 대해 종속성을 신속하게 가져오고 싶지만 현재 REPL 세션을 닫지 않으려는 경우가 꽤 일반적인 경우를 생각합니다. 당신은, 당신은 같은 것을 사용할 수 있습니다 현재 REPL 세션에서 데이터를 꽤 차트를 그릴 주문 술사에 끌어 원한다면

예를 들어

다음 아마도

(load-dependency "incanter" "incanter" "1.3.0-SNAPSHOT") 

;; now do stuff with Incanter...... 

당신은 종속성 resoltion를 트리거 할 것/Maven 또는 Leiningen에 적절한 저장소에서 로딩하지만, 런타임에 이것이 가능한지 아닌지를 알기에는 내부에 대해 충분히 알지 못합니다 .....

답변

6

자바의 기본 클래스 로더 동작으로 인해 어려움이 있지만 pomegrenade (actually, pomegranate) 클레임 당신이 원하는 것을 할 수 있습니다.

+0

굉장한 -이 법안을 완벽하게 맞는 것처럼 보입니다! 재미있게도 Incanter 예제는 석류 문서에 사용 된 것과 같습니다 :-) – mikera

+0

@mikera 당신은 확실히 운이 좋았습니다.이 라이브러리는 약 5 일 전에 출시되었습니다. http://disclojure.org/2011/10/05/today -in-the-intertweets-oct-5th-ed-3 /. – ponzao

+0

URL의 철자가 정확하다는 것을 알게되었지만 링크는 다소 우스꽝스러운 석류입니다. 나는 이것이 내가 모르는 이상한 수류탄 위주의 장난인가? – amalloy

5

Alembic은이 기능을 repl에 추가하는 leiningen 플러그인입니다. README 파일에서

직접 인용 :

증류기는 실행중인 JVM 인스턴스의 클래스 패스에 항아리를 증류 할 수있는 Clojure의 라이브러리입니다. 실행중인 REPL에 ad hoc 방식으로 또는 project.clj 파일을 다시로드하여 종속성을 추가 할 수 있습니다.

는 또한 project.clj을 파싱하고 즉시 누락 종속성 (load-project) 추가하는 기능을 추가한다.