2012-10-24 3 views
3

런타임에 내 앱에서 동적으로 기능을 추가하려고합니다. Maven 저장소에서 아티팩트를 다운로드하고, classpath에 추가하고, 앱 서버를 다시 시작하지 않고 사용할 수 있기를 바랍니다. 가능한?런타임에 Maven 아티팩트의 동적 로딩

나는 Maven repos에 프로그래밍 방식으로 액세스 할 수있는 Eclipse Aether를 접했다. 이제 누락 된 부분은 동적 클래스 경로입니다. 상업용 제품을 사용에 대해 모르는 경우

+0

질문은 왜 필요합니까? – khmarbaise

+0

기계의 클라이언트 전체에 코드를보다 쉽게 ​​배포 할 수있게합니다. 레퍼에 아티팩트를 배포 한 다음 클러스터의 각 시스템에 간단한 명령을 보내 코드를 가져와 사용하기 시작하면 매우 멋지다. – ccleve

답변

2

오드는 당신이 필요로하는 무엇이다. 오드의 래퍼 인 jcabi-aether를 사용해보십시오 :

File repo = this.session.getLocalRepository().getBasedir(); 
Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
    new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"), 
    JavaScopes.RUNTIME 
); 

당신이 알아야 할 모든 원격 메이븐 저장소, 로컬 REPO 위치의 목록이며, Maven은 시작하는 이슈의 좌표.

+0

이것이 클래스 로더 문제를 해결합니까? 내 응용 프로그램에서 사용할 수 있도록 유물을 클래스 로더에 추가합니까? – ccleve

+0

아니요, 네트워크의 JAR 파일을 로컬 디스크에로드합니다. – yegor256

+0

질문에 대답하지 않지만 aether는 좋은 아이디어입니다. +1. – ccleve

관련 문제