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/DefaultModelInheritanceAssembler.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.

-- 
jvz.

Jason van Zyl
jason at maven.org
http://maven.apache.org

People develop abstractions by generalizing from concrete examples.
Every attempt to determine the correct abstraction on paper without
actually developing a running system is doomed to failure. No one
is that smart. A framework is a resuable design, so you develop it by
looking at the things it is supposed to be a design of. The more examples
you look at, the more general your framework will be.

  -- Ralph Johnson & Don Roberts, Patterns for Evolving Frameworks 


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

Reply via email to