You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Les Hazlewood <le...@hazlewood.com> on 2009/03/05 16:42:30 UTC

Maven Filters or Resources and XML or Multiple Line properties

I'm trying to set up a mechanism that needs to interpolate chunks of XML (or
multiple line values) depending on environment/profile.

Currently I have a single web.xml.vm file shared via the remote-resources
plugin between multiple war modules.  The web.xml file is nearly identical
between war modules, with some minor exceptions.  I'm trying to filter
in/out those exceptions as necessary.  If I don't use remote-resources or
maven filters, I'd be cutting-and-pasting a lot of identical config
(definately want to avoid that).

For example, in one war module, a servlet listener should be defined.  In
another war module, the exact same config exists, but that particular
listener should not be defined at all.  So, I need the ability to filter in
chunks of XML and/or multiple lines of text - not just values from a
.properties file.

Here is how I tried it:

I modified the web.xml.vm file to contain this line:

....
${additionalListeners}
....

I tried defining a property in both web module pom.xml files:

==== moduleA pom.xml (needs the filter definition) ====
...
<properties>
    ...
    <additionalListeners>
        <listener>
            <listener-class>some.pkg.class.ServletListener</listener-class>
        </listener>
    </additionalListeners>
     ...
</properties>

==== moduleB pom.xml (should *not* have the filter definition ====
...
<properties>
    ...
    <additionalListeners></additionalListeners>
    ...
</properties>

However, Maven didn't like the embedded XML inside the above
<additionalListeners> definition.  So, I tried to wrap the above XML chunk
in CDATA tags, but it didn't work.  After adding the CDATA tags, the
rendered web.xml file contained the raw ${additionalListeners} line, without
proper substitution.

I am willing to not use the remote-resources plugin in favor of using
filters directly, but can filters work with XML chunks and multi-line
properties?  I have a chunks of configuration text (multiple lines) that
need to be shared across web modules.  It would be _nasty_ to define those
shared chunks in .properties files.

Can anyone explain a solution or point me to where this is already
documented (mailing list, etc)?  My google searches haven't provided
anything fruitful yet :/

Thanks!

Les

Re: Maven Filters or Resources and XML or Multiple Line properties

Posted by Les Hazlewood <le...@hazlewood.com>.
bump.  Anyone wanna give this a shot?

On Thu, Mar 5, 2009 at 10:42 AM, Les Hazlewood <le...@hazlewood.com> wrote:

> I'm trying to set up a mechanism that needs to interpolate chunks of XML
> (or multiple line values) depending on environment/profile.
>
> Currently I have a single web.xml.vm file shared via the remote-resources
> plugin between multiple war modules.  The web.xml file is nearly identical
> between war modules, with some minor exceptions.  I'm trying to filter
> in/out those exceptions as necessary.  If I don't use remote-resources or
> maven filters, I'd be cutting-and-pasting a lot of identical config
> (definately want to avoid that).
>
> For example, in one war module, a servlet listener should be defined.  In
> another war module, the exact same config exists, but that particular
> listener should not be defined at all.  So, I need the ability to filter in
> chunks of XML and/or multiple lines of text - not just values from a
> .properties file.
>
> Here is how I tried it:
>
> I modified the web.xml.vm file to contain this line:
>
> ....
> ${additionalListeners}
> ....
>
> I tried defining a property in both web module pom.xml files:
>
> ==== moduleA pom.xml (needs the filter definition) ====
> ...
> <properties>
>     ...
>      <additionalListeners>
>         <listener>
>             <listener-class>some.pkg.class.ServletListener</listener-class>
>         </listener>
>     </additionalListeners>
>      ...
> </properties>
>
> ==== moduleB pom.xml (should *not* have the filter definition ====
> ...
> <properties>
>     ...
>     <additionalListeners></additionalListeners>
>     ...
> </properties>
>
> However, Maven didn't like the embedded XML inside the above
> <additionalListeners> definition.  So, I tried to wrap the above XML chunk
> in CDATA tags, but it didn't work.  After adding the CDATA tags, the
> rendered web.xml file contained the raw ${additionalListeners} line,
> without proper substitution.
>
> I am willing to not use the remote-resources plugin in favor of using
> filters directly, but can filters work with XML chunks and multi-line
> properties?  I have a chunks of configuration text (multiple lines) that
> need to be shared across web modules.  It would be _nasty_ to define those
> shared chunks in .properties files.
>
> Can anyone explain a solution or point me to where this is already
> documented (mailing list, etc)?  My google searches haven't provided
> anything fruitful yet :/
>
> Thanks!
>
> Les
>