I think there could be some value to making resource sharing a little
easier out of the box. Naturally it won't fit all instances but those
other instances can already be solved with assembly and or
remote-resources

We currently package up the site descriptor for a parent and that gets
inherited by the children. I think we could leverage the
remote-resources and do something similar. If you put files in the
src/main/resources of a pom, we could automatically pick those up and
deploy them as a resource bundle. Then in the children we could augment
the resources model to specify to inherit the resources from the parents
and the plugin could be smart enough to find them on the disk or from
the repo.

-----Original Message-----
From: Benjamin Bentmann [mailto:[EMAIL PROTECTED] 
Sent: Sunday, April 13, 2008 6:06 AM
To: Maven Developers List
Subject: Re: Inheriting resources

Sebastien ARBOGAST wrote:
> I would like to find a natural solution to share confirguration
> files between two modules. [...]
> For now, the only solution I've found is to duplicate those files in
> src/main/resources for each module.
> Brian suggested that I could put those files in a third module to
package
> them up using assembly, and then retrieve these in both modules that
need
> it. But it doesn't seem very natural to me.
>
> As a matter of fact, I don't think that this use case is very rare. I 
> mean,
> there are situatiosn where you want to reuse icon graphics or 
> configuration
> files in several modules. And it would be great if we could place
those
> resources in the parent module and have the submodules inherit
resources
> from their parent.
>
> What do you think? Would it be feasible? Would it be okay with best
> practices promoted by Maven?

I'm used to think of projects as independent build units. More
precisely, I 
expect the following to work:
- checkout an arbitrary project/module, i.e. not necessarily a whole
trunk
- run any build command on this checkout, it should succeed

Now, if I checked out one of your sub-modules how should it inherit its 
resources from the parent which is not on my local disk? Maven can
retrieve 
the POM and the site descriptor from the remote repo but anything else
(like 
resources) from the parent project is not shared via the repo.

For the above reason, you would need to package the resources up into a
JAR 
that can be deployed to the repos. Maybe your resources need filtering 
before their packaging and now you're quite there what is known as a
"jar" 
packaging. That is just as Brian suggested, a separate module. And I
believe 
this is right because sharing POM configuration and sharing resources
seem 
two different aspects, hence separation of concerns.

Finally note that project inheritance suffers from the same drawback as 
class inheritance in ordinary programming: What if you ever needed your 
resources in projects that do not inherit from a common parent? Shift it
up 
the parent chain until you reach a common ancestor and pollute the
resources 
for all children below? I would rather take the composition approach and

package your resources into an independent project/JAR that other
projects 
can put on their class path if needed.

Just my two cents,


Benjamin 


---------------------------------------------------------------------
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