1

Maven 플러그인을 개발 중이며 MavenProject 객체를 사용하여 project.getDependencyArtifacts()으로 내 의존성에 액세스합니다. 그러나 이것은 내 모든 jar, 심지어 테스트 전용 항아리까지 제공합니다.Maven 플러그인 아티팩트 필터 중요하지 않은 종속성

런타임이 아닌 모든 항아리를 필터링하는 방법이 있습니까? 방금 범위를 얻고 scope.equals("runtime")을 비교하면 컴파일 및 기타 중요한 종속성을 버릴 것입니다.

+0

Maven War Plugin의 출처를 살펴볼 수 있습니다. 특히 ArtifactsPackagingTask 클래스는 전쟁에 아티팩트를 추가하는 작업을 처리합니다. http://svn.apache.org/viewvc/maven/plugins/tags/maven-war-plugin-2.1.1/src/main/java/org /apache/maven/plugin/war/packaging/ArtifactsPackagingTask.java?view=markup –

답변

1

다음 중 하나의 논리를 사용하기 때문에 기존 방법을 찾지 못했습니다. 이것은 커스텀 이어 (ear)를 구축하는 플러그인으로 XML 파일에 필요한 의존성을 추가하고이를 아카이브에 포함시킵니다. 전이 의존성에 관심이 있으니 getDependencyArtifacts 대신 getArtifacts을 사용하고 있습니다.

Collection<Artifact> dependencies = new ArrayList<Artifact>(); 
    dependencies.addAll(project.getArtifacts()); 
    for (Iterator<Artifact> it=dependencies.iterator(); it.hasNext();) { 
     Artifact dependency = it.next(); 
     String scope = dependency.getScope(); 
     String type = dependency.getType(); 
     if (dependency.isOptional() || !"jar".equals(type) || "provided".equals(scope) || "test".equals(scope) || "system".equals(scope)) { 
      getLog().debug("Pruning dependency " + dependency); 
      it.remove(); 
     } 
    } 
+0

getArtifacts는 빈 세트를 반환합니다. 패키지 단계에서 다른 프로젝트에서 실행합니다. 그 일을하기위한 트릭이 있습니까? –

+0

@requiresDependencyResolution 런타임이 트릭을 수행했습니다. –

관련 문제