2013-05-25 1 views
2

이것은 매우 중요하며 완전히 마감이되어 있습니다. 도움말 크게 감사드립니다. 나는 그것을 설치하여 다른 프로젝트의 결과 항아리를 사용하여 다음 lein의 uberjar이 프로젝트를 컴파일하고있다 Leiningen은 동일한 버전 번호로 다시 설치 한 후 종속성을 다운로드하지 않습니다.

interval_tree.clj 나는 특히 파일이 포함되어 레드 - 블랙라는 Clojure의 프로젝트라고 한

로컬 메이븐 저장소.

mvn install:install-file \ 
    -Dfile=../red-black/target/red-black-0.1.0.jar \ 
    -DgroupId=self \ 
    -DartifactId=red-black \ 
    -Dversion=0.1.0 \ 
    -Dpackaging=jar \ 
    -DgeneratePom=true \ 
    -DcreateChecksum=true \ 
    -DlocalRepositoryPath=local_mvn_repo 

미친 것은 캔트 나의 새로운 기능

user=> (red-black.interval-tree/tree-to-flat-list) 
CompilerException java.lang.RuntimeException: No such var: red-black.interval-tree/tree-to-flat-list, compiling (NO_SOURCE_PATH:1:1) 

에게 그러나이 찾을 자바 지금은, 새로운 기능을 추가 내 항아리를 컴파일하고 다른 프로젝트의 로컬 메이븐 저장소에 그것을 다시 설치하고, 함수는 red-black.interval-tree.clj! 나는 심지어 local_mvn_repo에 들어가 항아리의 압축을 풀고 interval_tree.clj 소스를 살펴 보았습니다. 함수가 거기에있다!

더 이상한 점은 해당 라이브러리의 다른 기능에 액세스 할 수 있다는 것입니다. 예를 들어, 로컬 MVN의 REPO 내 두 번째 프로젝트 : 이제

user=> (use 'red-black.interval-tree) 
nil 

작은 탭 탭의 마법 :

user=> (red-black.interval-tree/ 
red-black.interval-tree/add-to-result  red-black.interval-tree/black    red-black.interval-tree/check-max-interval 
red-black.interval-tree/get-color   red-black.interval-tree/get-hash    red-black.interval-tree/get-interval 
red-black.interval-tree/get-key    red-black.interval-tree/get-left    red-black.interval-tree/get-max 
red-black.interval-tree/get-parent   red-black.interval-tree/get-right   red-black.interval-tree/get-root 
red-black.interval-tree/get-sentinel   red-black.interval-tree/get-value   red-black.interval-tree/has? 
red-black.interval-tree/health-check   red-black.interval-tree/high     red-black.interval-tree/insert 
red-black.interval-tree/insert-fixup   red-black.interval-tree/left-rotate   red-black.interval-tree/low 
red-black.interval-tree/max-of-three   red-black.interval-tree/new     red-black.interval-tree/node 
red-black.interval-tree/point-lookup   red-black.interval-tree/pretty-print   red-black.interval-tree/recursive-max 
red-black.interval-tree/red     red-black.interval-tree/right-rotate   red-black.interval-tree/set-color 
red-black.interval-tree/set-interval   red-black.interval-tree/set-key    red-black.interval-tree/set-left 
red-black.interval-tree/set-max    red-black.interval-tree/set-parent   red-black.interval-tree/set-right 
red-black.interval-tree/set-root    red-black.interval-tree/set-value   red-black.interval-tree/update-max 
user=> (red-black.interval-tree/ 

그러나 당신은 나무 - 투 - 평면 목록에 누락 된 funstion를 볼 수 있습니다 . red-black 프로젝트로 돌아가서 repl을 실행하면 방금 찾은 프로젝트를 호출 할 수 있습니다. 도움! 5 시간 전부터 레드 블랙 프로젝트에서 새로운 방법을 만들었고, uberjar를 컴파일하고, 로컬 메이븐 설치를 통해 다른 프로젝트에 설치했습니다. 새로운 방법이 제대로 적용되었습니다. 뭔가 잘못되어있는 것 같습니다. 조언하십시오. foo는-이와 lein repl을에

http://gorillamatrix.com/files/foo.tar.gz 

이동합니다

는 업데이트 :이 문제는이 타르볼에의

자체는 예를 들어. foo-two.core를로드하려고하면 다음과 같이 표시됩니다.

user=> (use 'foo-two.core) 
CompilerException java.lang.RuntimeException: No such var: foo-one.core/bar, compiling:(foo_two/core.clj:6:2) 

foo-one.core/bar가 확실히 정의되었습니다.

답변

5

lein은 동일한 버전 (같아도) 인 경우 이미 가져온 (local_mvn_repo) .jar에서 .m2/저장소로 업데이트하지 않으므로 가져온 첫 번째 버전을 계속 사용합니다 (항상 가져옵니다. local_mvn_repo의 .m2가 아닌 .m2를 사용하십시오.) 버전을 올리고 다시 설치하거나 (사용하는 프로젝트의 project.clj에서 버전을 업데이트해야합니다) 또는 (여전히 동일한 버전을 사용하는 경우) 그냥 /m2/repositories에서 지우면 lein이 다시 가져올 수 있습니다 (local_mvn_repo에서)

+0

와우, 그게 다야, 정말 고마워! –

+1

버전이 -SNAPSHOT 인 경우 lein은 최신 버전을 얻습니다. – noisesmith