Как переопределить привязку по умолчанию к фазе плагина Maven

Я хочу определить различные исполнения для плагинов в pluginManagement моего родительского pom, а затем привязать конкретные исполнения к фазам в дочерних pom. Я вижу противоречивое поведение в зависимости от используемого плагина и расположения раздела pluginManagement.

В этом первом примере pluginManagement расположен в родительском pom, определяя 2 выполнения для плагина компилятора и 2 выполнения для плагина antrun.



master-pom
4.0.0
plugin.test
master-pom
pom
1.0.0-SNAPSHOT

    
                       
            
                maven-compiler-plugin
                
                    
                        execution-1
                        none
                        
                            compile
                        
                        
                            1.6
                            1.6
                            
                                **/*
                            
                        
                    
                    
                        execution-2
                        none
                        
                            compile
                        
                        
                            1.5
                            1.5
                            
                                **/*
                            
                        
                    
                
            

            
                org.apache.maven.plugins
                maven-antrun-plugin
                1.7
                
                    
                        execution-1
                        
                            run
                        
                        
                            
                                
                            
                        
                    
                    
                        execution-2
                        
                            run
                        
                        
                            
                                
                            
                        
                    
                
            

        
    

И ребенок пом



build
4.0.0
plugin.test
build
1.0.0-SNAPSHOT
pom

    plugin.test
    master-pom
    1.0.0-SNAPSHOT
    ./master-pom.xml


    
        
            maven-compiler-plugin
            
                
                    execution-1
                    generate-sources
                
            
        

        
            org.apache.maven.plugins
            maven-antrun-plugin
            
                
                    execution-1
                    generate-sources
                
            
        
    

Бег 'mvn clean install ' на дочернем pom будут запускаться оба исполнения плагина компилятора и только 1-е выполнение плагина antrun, хотя только 1-е выполнение каждого было привязано к фазе.

Теперь переместим плагин управления на дочерний пом:



build
4.0.0
plugin.test
build
1.0.0-SNAPSHOT
pom

    
                       
            
                maven-compiler-plugin
                
                    
                        execution-1
                        none
                        
                            compile
                        
                        
                            1.6
                            1.6
                            
                                **/*
                            
                        
                    
                    
                        execution-2
                        none
                        
                            compile
                        
                        
                            1.5
                            1.5
                            
                                **/*
                            
                        
                    
                
            

            
                org.apache.maven.plugins
                maven-antrun-plugin
                1.7
                
                    
                        execution-1
                        
                            run
                        
                        
                            
                                
                            
                        
                    
                    
                        execution-2
                        
                            run
                        
                        
                            
                                
                            
                        
                    
                
            

        
    
    
        
            maven-compiler-plugin
            
                
                    execution-1
                    generate-sources
                
            
        

        
            org.apache.maven.plugins
            maven-antrun-plugin
            
                
                    execution-1
                    generate-sources
                
            
        
    

Эта помпа дает желаемое поведение, которое запускает только 1-е выполнение для каждого плагина. Плагин компилятора (и большинство других) работает корректно только в том случае, когда pluginManagement расположен в одном и том же модуле, и каждое выполнение связано с phase = none (возможно, потому что оно связывает выполнение с фазой по умолчанию). Плагин antrun работает корректно в любом случае.

Как я могу этого добиться, имея раздел pluginManagement в родительском pom и не привязывая специально нежелательные исполнения к phase = none в дочерних pom? Это ошибка в Maven или это поведение как-то оправдано? Я пробовал это на Maven 3.0.4 и Maven 2.2.1 с теми же результатами.

Ответы на вопрос(1)

Ваш ответ на вопрос