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

이것은 내 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”태그가 빌드 동작을 변경하는 이유는 무엇입니까? 아니면 다른 목표 나 옵션을 사용해야합니까?



답변

여전히 추가해야합니다

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

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

Maven 문서에서 :

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


답변

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

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

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

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

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

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

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


답변

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

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


답변

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

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

에서 복사 :

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


답변