2016-08-27 3 views
1

pom에서 plugin 요소의 종속 요소를 추가 할 수 있습니다.pom.xml의 plugin 요소에서 종속성을 사용하는 방법은 무엇입니까

질문 : 대상 : 플러그인에 의해 사용되는 모든 라이브러리가 그 안에 포함되어 있지 않아야합니까? 플러그인에서 사용하는 일부 lib를 추가 요금을 부과합니까? 공식 Maven POM Reference 문서에서

<plugin> 
    <groupId>org.raml.plugins</groupId> 
    <artifactId>raml-jaxrs-maven-plugin</artifactId> 
    <version>1.3.4</version> 
    <dependencies> 
     <dependency> 
      <groupId>org.raml</groupId> 
      <artifactId>raml-parser-2</artifactId> 
      <version>1.0.0</version> 
     </dependency> 
    </dependencies> 
</plugin> 

답변

0

plugin 요소의 종속성을 사용하면 플러그인에서 사용할 특정 버전을 정의 할 수 있습니다.여기

는 당신이 필요로하는, 당신은이 플러그인을 실행할 때 최신 개미 버전을 사용하려면 경우 메이븐 Antrun 플러그인 버전 1.2, 개미 버전 1.6.5를 사용하는 예를 들어 maven.apache.org

에 좋은 예입니다 <dependencies> 요소를 추가하려면

+0

그래서 제 대답에서 15 분 후에 실제로 동일한 내용을보고하고 복사하여 붙여 넣으십시오. 요점은 무엇입니까? –

+0

@ sab 왜 저의 이전 답변이 정보를 먼저 제공하고 자세한 내용을 제공했을 때이 늦은 답변을 수락합니까? 이 대답은 단순히 경찰과 붙여 넣기였습니다 –

+1

@ A_Di-Matteo 다른 대답을 복사하여 질문에 대답 할 의도가 없습니다. 나는 질문이 게시 된 순간 편집 모드에 있었고 게시했을 때 귀하의 대답은 이미있었습니다. 나는 당신의 대답이 더 자세하고 대답으로 받아 들여 져야한다는 것에 동의합니다. sab - 가능한 경우 다른 답변을 수락하십시오. 건배. – LeTex

1

:

종속 : 종속성이 POM에서 많이 볼, 모든 플러그인 요소 블록에서 요소입니다 있습니다. 종속성은 기본 빌드와 동일한 구조와 기능을가집니다. 이 경우의 가장 큰 차이점은 프로젝트의 종속성으로 적용하는 대신 현재 적용되는 플러그인의 종속성으로 적용된다는 것입니다. 이것의 힘은 아마도 exclusions을 통해 사용되지 않은 runtime 종속성을 제거하거나 필요한 종속성의 버전을 변경하여 플러그인의 종속성 목록을 변경하는 것입니다.

즉, 특정 라이브러리의 범위 내에서 일부 라이브러리를 플러그인 클래스 경로에서 제외하거나 특정 버전을 대체 할 수 있습니다.

플러그인에 종속성을 추가해도 빌드중인 응용 프로그램의 클래스 경로는 변경되지 않습니다. 플러그인 용 dependencies은 클래스 경로를 직접 변경하기 위해 추가 구성 가능성을위한 진입 점입니다.

대부분의 경우에 해당 수준에서 작업 할 필요는 없지만 경우에 따라서는 매우 유용하며 특정 종속성을 추가 할 필요가있는 플러그인도 있습니다 (예 : 변환 또는 코드에서 작동하는 플러그인). 세대 (WSDL에서 Java 등)는 아마도 더 의존성 (당신은 어떤 버전과 어떤 버전을 선택해야하는지) 등등을 필요로 할 것입니다.


또 공식 예제는 공식 Maven - Guide to configure plugins 문서에 의해 제공됩니다 :

당신은 더 최근의 의존성 버전을 사용하는 것이 일반적으로, 빌드 플러그인의 종속성을 구성 할 수 있습니다.

예를 들어 Maven Antrun Plugin 버전 1.2는 Ant 버전 1.6.5를 사용합니다.이 플러그인을 실행할 때 최신 Ant 버전을 사용하려면 <dependencies> 요소를 추가해야합니다.

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.2</version> 
     ... 
     <dependencies> 
      <dependency> 
      <groupId>org.apache.ant</groupId> 
      <artifactId>ant</artifactId> 
      <version>1.7.1</version> 
      </dependency> 
      <dependency> 
      <groupId>org.apache.ant</groupId> 
      <artifactId>ant-launcher</artifactId> 
      <version>1.7.1</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

또 다른 예는 자바 프로그램을 실행하기 위해 java 목표를 사용하려는 당신이 실제로 그 클래스 경로에 라이브러리를 추가해야 할 경우에 공식 Exec Maven Plugin documentation에서 제공하지만 원하지 않는 빌드중인 응용 프로그램의 클래스 경로를 변경하려면이 방법이 훨씬 깔끔하고 합리적인 방법입니다.

관련 문제