>From the docs here
http://maven.apache.org/maven2/project-descriptor.html#Build about the
<pluginManagement/> element

Any local configuration for a given plugin will override the plugin's entire
definition here. 

So what constitutes 'local configuration'. If I am to reference the plugin,
enough to invoke the configuration supplied in a parent <pluginManagement/>,
how do I do that without overriding the plugin's entire definition?

Also am I understanding correctly that <build><plugins/> setting are never
inherited?

BTW I am making good progress writing all this up for the user docs.
Definitely need this clarification

jmp

> -----Original Message-----
> From: Peter van de Hoef [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, April 27, 2005 6:32 PM
> To: Maven Users List
> Subject: Re: [m2] POM inheritance
> 
> Hi John,
> 
> Thanks for your help. So <pluginManagement> is used for 
> specifying plugin versions and configuration parameters, 
> whether they are used or not. This will be inherited by child 
> projects. The <plugins> section is just a list of plugins 
> that will actually be used. This list has to be repeated in a 
> child project though, whenever a setting of build-section has 
> to be changed.
> 
> Now, I have specified a <pluginManagement> section in the 
> parent POM, in the hope that it gets inherited by derived 
> projects, but it does not; in the child project, the java 
> compiler starts complaining about assertions again.
> 
> The only way to solve this is to repeat myself by inserting a 
> copy of the <pluginManagement> section of the parent into the child.
> 
> If I look at 'DefaultModelInheritanceAssembler.java' it 
> appears that the assemblePluginManagementInheritance() 
> function correctly takes care of <pluginManagement> sections 
> of the parent.
> What is going wrong here? Did I miss something in the project defs?
> 
> The parent POM looks like:
> 
> <project>
> 
>       <name>Parent POM</name>
> 
>       <groupId>_test</groupId>
>       <artifactId>parent</artifactId>
>       <version>1.0</version>
>       <packaging>pom</packaging>
>       
>       <modules>
>               <module>child</module>
>       </modules>
> 
>       <build>
>               <sourceDirectory>src</sourceDirectory>
> 
>               <pluginManagement>
>                       <plugins>
>                               <plugin>
>                                       
> <groupId>org.apache.maven.plugins</groupId>
>                                       
> <artifactId>maven-compiler-plugin</artifactId>
>                                       
> <version>1.0-alpha-2-SNAPSHOT</version>
>                                       <configuration>
>                                               <source>1.5</source>
>                                               <target>1.5</target>
>                                       </configuration>
>                               </plugin>
>                       </plugins>
>               </pluginManagement>
> 
>               <plugins>
>                       <plugin>
>                               
> <groupId>org.apache.maven.plugins</groupId>
>                               
> <artifactId>maven-compiler-plugin</artifactId>
>                       </plugin>
>               </plugins>
>       </build>
> 
> </project>
> 
> And the child, which inherits from the parent:
> The <build> section is overridden with a different 
> <sourceDirectory> and, since the <plugins> of the parent gets 
> lost, it is repeated.
> 
> <project>
> 
>       <name>Child POM</name>
> 
>       <groupId>_test</groupId>
>       <artifactId>child</artifactId>
>       <version>1.0</version>
>       <packaging>pom</packaging>
> 
>       <parent>
>               <groupId>_test</groupId>
>               <artifactId>parent</artifactId>
>               <version>1.0</version>
>       </parent>
>       
>       <build>
>               <sourceDirectory>src2</sourceDirectory>
>               <plugins>
>                       <plugin>
>                               
> <groupId>org.apache.maven.plugins</groupId>
>                               
> <artifactId>maven-compiler-plugin</artifactId>
>                       </plugin>
>               </plugins>
>       </build>
> </project>
> 
> Thanks in advance,
> Peter van de Hoef
> 
> John Casey wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > 
> > Sorry, I forgot all about the design decisions surrounding 
> this... :)
> > 
> > Actually, our original decision was to disallow inheritance of any 
> > plugin configuration, since plugin configuration can (and usually 
> > will) modify the build lifecycle for that project. In light 
> of this, 
> > inherited plugin configuration could lead to somewhat 
> > counter-intuitive build behavior.
> > 
> > We have a <pluginManagement/> section of the POM for common 
> > configuration of plugins for use within a typical 
> multiproject-style 
> > setup. It would be used like this:
> > 
> > parent-pom.xml
> > - -------------------
> > ...
> >   <pluginManagement>
> >     <plugins>
> >       <plugin>
> >         <groupId>org.apache.maven.plugin</groupId>
> >         <artifactId>maven-something-plugin</artifactId>
> >         <version>1.4</version>
> >         <configuration>
> >           <someParam>someValue</someParam>
> >         </configuration>
> >       </plugin>
> >     </plugins>
> >   </pluginManagement>
> > ...
> > - -------------------
> > 
> > child-pom.xml
> > - -------------------
> > ...
> >   <parent>
> >     <groupId>test</groupId>              <!-- Pretend that all of
> >     <artifactId>test-root</artifactId>    | this resolves to the
> >     <version>1.0</version>                | parent-pom.xml above -->
> >   </parent>
> > ...
> >   <build>
> >     <plugins>
> >       <plugin>
> >         <groupId>org.apache.maven.plugin</groupId>      
> <!-- groupId,
> >         <artifactId>maven-something-plugin</artifactId>  | 
> artifactId
> >       </plugin>                                          | 
> enough here.
> >                                                          -->
> >   </build>
> > ...
> > - -------------------
> > 
> > If you need to override some setting from the pluginManagement 
> > section, just specify it locally; more local specification in an 
> > inheritance hierarchy wins.
> > 
> > Will this solve your problem?
> > 
> > HTH,
> > 
> > john
> > 
> > 
> > Peter van de Hoef wrote:
> > 
> >>Thanks for your reply.
> >>Now I see why the complete <build> section is inherited when it is 
> >>absent in the child:
> >>
> >>       *if* ( childBuild == *null* )
> >>       {
> >>           child.setBuild( parentBuild );
> >>       }
> >>       *else*
> >>       {
> >>           /// A lot of fields are inherited, except <plugins>
> >>/        }
> >>
> >>I understand that inheriting plugins is problematic, since 
> Maven does 
> >>not 'know' about the plugin parameters and cannot decide their 
> >>inheritance rules.
> >>Wouldn't it be possible to inherit the complete <plugins> 
> section if 
> >>it is not specified in the child, just like you do with <resources> 
> >>and <testResources>?
> >>That seems IMHO more in line with the situation where there is no 
> >><build> section at all. In that way it is possible to 'tweak' the 
> >>build settings slightly without losing the major build logic.
> >>- Peter
> >>
> >>Jason van Zyl wrote:
> >>
> >>
> >>>On Tue, 2005-04-26 at 21:00 +0200, Peter van de Hoef wrote:
> >>> 
> >>>
> >>>
> >>>>Hi all,
> >>>>
> >>>>I have a question about which elements of the POM are 
> inherited by 
> >>>>derived POM's.
> >>>>  
> >>>
> >>>
> >>>The law on inheritance resides here:
> >>>
> >>>http://svn.apache.org/viewcvs.cgi/maven/components/trunk/maven-
> >>>project/src/main/java/org/apache/maven/project/inheritance/
> DefaultMod
> >>>elInheritanceAssembler.java?rev=164217&sortdir=down&view=log
> >>>
> >>>
> >>> 
> >>>
> >>>
> >>>>In my parent POM I have a <build> section which specifies 
> the source 
> >>>>directory and some parameters for the java compiler:
> >>>>
> >>>>   <build>
> >>>>       <sourceDirectory>src</sourceDirectory>
> >>>>       <plugins>
> >>>>           <plugin>
> >>>>               <groupId>org.apache.maven.plugins</groupId>
> >>>>               <artifactId>maven-compiler-plugin</artifactId>
> >>>>               <version>1.0-alpha-2-SNAPSHOT</version>
> >>>>               <configuration>
> >>>>                   <source>1.5</source>
> >>>>                   <target>1.5</target>
> >>>>               </configuration>
> >>>>           </plugin>
> >>>>       </plugins>
> >>>>   </build>
> >>>>
> >>>>In a derived POM, the source directoriy is different, so a new 
> >>>><build> section is specified:
> >>>>
> >>>>   <build>
> >>>>       <sourceDirectory>module/src</sourceDirectory>
> >>>>   </build>
> >>>>
> >>>>The overridden source directory is effectuated in this 
> second POM, 
> >>>>but it appears that  the java compiler settings have 
> disappeared (it 
> >>>>starts e.g. complaining about JDK 1.4 features like 
> assertions). If 
> >>>>I do not specify a <build> section in the derived POM, 
> the settings 
> >>>>of the base POM are inherited.
> >>>>
> >>>>It appears that the <build> section is (completely) 
> inherited if it 
> >>>>is not present in the derived POM, but if a <build> section is 
> >>>>specified in the derived POM, everything from the base 
> POM is thrown 
> >>>>away and only the settings of the derived POM are used.
> >>>>Is this correct?
> >>>>  
> >>>
> >>>
> >>>We selectively choose what to inherit and the 
> configuration for the 
> >>>plug-ins are a little trickier because they free form 
> configurations 
> >>>essentially. We need to do a more careful merge of the 
> configurations 
> >>>but this might not work generally so if we need to allow 
> the plugin 
> >>>to determine how a configuration should be inherited then we'll 
> >>>probably have to come up with some way to decide this 
> using notations 
> >>>we have for plugins. Anyway, I see you posted a JIRA issue 
> so we'll 
> >>>take a look at it.
> >>>
> >>> 
> >>>
> >>
> >>------------------------------------------------------------
> ---------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>
> > 
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.2.6 (GNU/Linux)
> > 
> > iD8DBQFCbr0UK3h2CZwO/4URAqFHAJ0ay0AvjZ6oniTE+FY2m+jNMqG76QCfVpxi
> > LNQUjh/RIpyil4bX6nB7RhE=
> > =rNwb
> > -----END PGP SIGNATURE-----
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > 
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to