2012-07-26 3 views
4

Maven Artifact 정보 (GroupId, ArtifactId, Version)를 프로그래밍 방식으로 (Java를 사용하여) 로컬 저장소에서 Artifact를 검색하려면 어떻게해야합니까?Maven Java API를 사용하여 저장소에서 Maven Artifact 가져 오기

특히 Maven 저장소에 연결하고 org.apache.maven.artifact.Artifact를 생성/검색 할 수 있어야 Artifact와 관련된 파일을 검색 할 수 있습니다.

나는 m2e 소스 코드를 살펴 봤지만 MavenImpl.java (아티팩트 해상도 제공)는 필자가 필요로하는 것보다 훨씬 복잡하고 저장소 연결 방법을 이해하기가 어렵다.

답변

7

아마도 Aether을보고 싶을 것입니다. 예제는 Wiki을 참조하십시오.

당신은 ( '/'<groupId>'.'를 교체 주) 파일을 주어진 정보로부터 URL을 구성하고 다운로드 할 수 있습니다
+0

고마워요! 이것은 내가 필요한 것입니다! – davdic

0

:

<repositoryUrl>/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<type> 
0

이것은 우리가 jcabi-aether에서 그것을 할 방법은 다음과 같습니다

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

원격 저장소 목록, 로컬 저장소 위치 및 이슈의 Maven 좌표를 제공하십시오. 이름에서 알 수 있듯이 도서관은 Sonatype의 Apache Aether을 사용합니다.

+1

안녕하세요! 나는 여기에 보이는 바와 같이 maven 프로젝트 외부에서 jcabi-aether를 사용하려고 시도한다 : http://aether.jcabi.com/index.html, 그러나 나는 항상 컴파일 예외를 얻는다 : Error : (22, 25) java : org에 접근 할 수 없다. apache.maven.project.MavenProject org.apache.maven.project.MavenProject에 대한 클래스 파일을 찾을 수 없습니다. maven-core를 포함하면 다른 예외가 발생합니다. 왜? 이 프로젝트가 아직 유지 관리되고 있습니까? –