Maven의 pom.xml에서 pluginManagement는 무엇입니까?


266

이것은 내 pom 파일의 스 니펫입니다.

....
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>                        
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            ......
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
...

나는 명령과 함께 성공적으로 사용

mvn install

그러나 "pluginManagement"태그로 묶으려고 maven-dependency-plugin하면 install목표를 시작할 때 작동 이 중지됩니다 . "pluginManagement"태그가 빌드 동작을 변경하는 이유는 무엇입니까? 아니면 다른 목표 나 옵션을 사용해야합니까?

답변:


299

여전히 추가해야합니다

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
    </plugin>
</plugins>

pluginManagement모든 프로젝트 모듈에서 동일한 플러그인 구성을 공유하는 방법 일 뿐이 므로 빌드에서

Maven 문서에서 :

pluginManagement : 사이드 플러그인과 함께 표시되는 요소입니다. 플러그인 관리에는이 특정 프로젝트 빌드에 대한 플러그인 정보를 구성하는 것이 아니라이 프로젝트에서 상속되는 프로젝트 빌드를 구성하는 것을 제외하고는 플러그인 요소가 거의 동일한 방식으로 포함됩니다. 그러나 이는 하위 요소의 plugins 요소 내에서 실제로 참조되는 플러그인 만 구성합니다. 아이들은 pluginManagement 정의를 무시할 권리가 있습니다.


266

차이 <pluginManagement/>하고 <plugins/>있는 그 <plugin/>미만 :

  • <pluginManagement/>빌드의 모듈이 상속 할 플러그인의 설정을 정의합니다. 부모 pom 파일이있는 경우에 좋습니다.

  • <plugins/>플러그인의 실제 호출입니다. 에서 상속되거나 상속되지 않을 수 있습니다 <pluginManagement/>.

당신은이 할 필요가 없습니다 <pluginManagement/>그것은 부모 POM 아니라면, 프로젝트에서. 그러나 부모 pom 인 경우 자식 pom에서 다음과 같은 선언이 필요합니다.

<plugins>
    <plugin>
        <groupId>com.foo</groupId>
        <artifactId>bar-plugin</artifactId>
    </plugin>
</plugins>

구성을 정의하지 않은 방법에 주목하십시오. 자식 프로젝트의 요구에 따라 호출을 추가로 조정하지 않으면 부모에서 상속 할 수 있습니다.

보다 구체적인 정보는 다음을 확인하십시오.


당신의 답변에 감사드립니다. M2E Eclipse IDE 플러그인의 작은 버그를 우회해야하기 때문에 동일한 pom 파일에 pluginManagement 및 플러그인 태그 (maven-dependency-plugin의 경우)를 혼합해야합니다. 참조 stackoverflow.com/questions/8706017/...
안드레아 Borgogelli Avveduti

7
감사! :)이에 대해 동일 <dependency/>하고 <dependencyManagement/>. (만약 당신이 좋아하면, 해당 버전 및 범위와 함께) 당신은에 종속성을 정의하는 <dependencyManagement/>섹션 다음에 <dependencies/>섹션 당신은 단지를 정의 groupId하고 artifactId.
carlspring

1
플러그인을 두 번 실행해야하는 경우 pluginmanagement를 사용해야합니까?
Kalpesh Soni 2016 년

@ KalpeshSoni : 그것은 달려 있습니다-재정의하고 싶지 않은 두 실행 사이에 공통 구성을 원할 수 있습니다.
carlspring

39

pluginManagementa parent pom를 사용 하여 구성하고 child pom싶지만 모든 하위 플러그인이 사용하려는 것은 아닙니다. 예를 들어 super pommaven Javadoc 플러그인에 대한 몇 가지 옵션을 정의 할 수 있습니다 .

각각 child pomJavadoc을 사용하고 싶지 않을 수도 있으므로 pluginManagement섹션 에서 해당 기본값을 정의 하십시오. Javadoc 플러그인을 사용하려는 하위 pom은 플러그인 섹션을 정의하고의 정의에서 구성을 상속pluginManagement 합니다 parent pom.


감사합니다. Eclipse 용 M2E 플러그인의 작은 버그를 우회해야하기 때문에 동일한 pom 파일에 pluginManagement 및 plugin 태그를 혼합하려고했습니다. stackoverflow.com/questions/8706017/…
Andrea Borgogelli Avveduti

3

pluginManagement : 사이드 플러그인과 함께 표시되는 요소입니다. 플러그인 관리에는이 특정 프로젝트 빌드에 대한 플러그인 정보를 구성하는 대신이 컴포넌트에서 상속되는 프로젝트 빌드를 구성하는 것을 제외하고는 플러그인 요소가 거의 동일한 방식으로 포함됩니다. 그러나 이는 하위 요소의 plugins 요소 내에서 실제로 참조되는 플러그인 만 구성합니다. 아이들은 pluginManagement 정의를 무시할 권리가 있습니다.

에서 http://maven.apache.org/pom.html#Plugin%5FManagement

에서 복사 :

Maven2-플러그인 관리 및 부모-자식 관계 문제

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.