On Monday 09 July 2007 14:42, Kenney Westerhof wrote:
> Daniel Kulp wrote:
> > After battling with the braindead resource filtering once again for
> > the ump-teenth time, I've decided I need to do something about
> > it....
>
> You dissin' my code huh? :)
>
> > The main thing I'd like to do is allow use of a better filter engine
> > (like velocity) that would provide much more flexibility. The
> > issue is how to do it without breaking all the existing builds that
> > are out there. Here are my thoughts....
>
> I'd very much like to know what the problems are. Probably the fact
> that escaping is missing?
Yep. That's the #1 issue. I've completely given up on trying to get
the string "${pom.version}" outputted into the file.
The other thing I'd like to do is conditional filtering based on whether
the version is a SNAPSHOT or not. Kind of like: (pseudocode, not sure
on the velocity syntax)
#if ${pom.version}.indexOf("SNAPSHOT") != -1
version.message=Version ${pom.version} - Use at your own risk.
#else
version.message=Version ${pom.version}
#fi
> > 2) The next option would be to add a filterType configuration
> > property onto the resources plugin itself. You would need to
> > configure the plugin to use it. Also, it would apply to all
> > resources with filtering=true. We could combine this with (1) and
> > instead of making "simple" the default if not specified in the
> > resource, whatever this option is set to is the default.
>
> This is a better option. the plugin can be configured with resource
> sets, which are just initialized from the pom itself.
> perhaps 'src/main/velocity/' could be checked by default and
> velocity-copied.
The problem is the "Resource" object that the resources plugin uses is
maven-model defined. Not something that's extensible as that requires
a schema change. I suppose what COULD work well is to add:
velocityResources = List<Resource>
configuration to the resources plugin (and if list is empty, look for the
default of src/main/velocity) and use that. In that case, "regular"
resources can be configured just in build/resources and
build/testResources, but the velocity based ones would need a full
plugin configuration. A bit inconsistent, but acceptable.
After thinking about this a bit more, I wonder if it makes more sense to
just create a "maven-velocity-plugin" and ignore resources all-together?
That would be super quick to write. (I'd still like to see the
escaping issue fixed. :-) We already have the plexus
VelocityComponent. Would take very little work to wire it into a
plugin.
> > Anyway, what are peoples thoughts on this? Any other options?
> > What direction do people feel is the best way to proceed? I
> > personally would like to go with Option #1 and require Maven 2.0.8
> > if you want to use the advanced filtering, but I know some people
> > are totally against schema changes.
>
> Well, if there's a good reason to change the schema then I'm all for
> it. Maybe we should just add <properties> again to dependencies and
> resource sets, so the resource plugin can look at the resourceset
> property 'filterType' or something, if it's set.
>
> Either way, changes to the model won't happen until 2.1.
>
> So, what's the problem with the filtering?
Getting any of the normal pom properties outputted to the target file
seems to be impossible.
--
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727 C: 508-380-7194
[EMAIL PROTECTED]
http://www.dankulp.com/blog
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]