I agree with Kenney on the need for environment specific filter files. I
have used such an approach for M1 as follows:
<goal name="filter:init">
<!-- Check if an environment has been passed -->
<maven:paramCheck value="${maven.filter.env}" fail="true" message="You have
to define a filter environment with -Dmaven.filter.env"/>
<!-- Validate that the environment is corectly configured for filtering -->
<u:tokenize var="envs" delim=",">${maven.filter.env.list}</u:tokenize>
<j:forEach var="env" items="${envs}">
<j:if
test="${context.getVariable('maven.filter.env').toString().trim().equalsIgnoreCase(env)}">
<j:set var="env.prop" value="maven.filter.env.${maven.filter.env}"/>
<j:set var="filter.file" value="${context.getVariable(context.getVariable('
env.prop'))}"/>
<echo>Using environment filter ${filter.file}</echo>
</j:if>
</j:forEach>
<maven:paramCheck value="${filter.file}" fail="true" message="No filter file
has been defined for this environment"/>
</goal>
<goal name="filter:filter" description="Loads a hierarchy of properties for
filtering" prereqs="filter:init">
<!-- Loading global filter -->
<j:set var="filter.src" value="build.properties"/>
<u:available file="${filter.src}">
<echo>Loading filter ${filter.src}</echo>
<ant:filter filtersfile="${filter.src}"/>
</u:available>
<!--Loading environment specific filter -->
<j:set var="filter.src" value="${filter.file}"/>
<u:available file="${filter.src}">
<echo>Loading filter ${filter.src}</echo>
<ant:filter filtersfile="${filter.src}"/>
</u:available>
<!-- Loading user defined filter -->
<j:set var="filter.src" value="${user.home}/build.properties"/>
<u:available file="${filter.src}">
<echo>Loading filter ${filter.src}</echo>
<ant:filter filtersfile="${filter.src}"/>
</u:available>
</goal>
I am wondering if M2 could have something like:
<filtering>
<filterTokens>
<token>value</token>
</filterTokens>
<filterFiles>
<filterFile env="foodev">foo.properties</filterFile>
<filterFile>bar.properties</filterFile>
</filterFiles>
</filtering>
Filters are applied in the order they are defined in the pom. Fileterfile
foo.properties is only loaded when -Denv=foodev is passed. bar.properties is
always loaded and overridden with what's define in the user's home
build.properties.
On 8/25/05, Brett Porter <[EMAIL PROTECTED]> wrote:
>
>
> >Yes, I know - but I'm not sure how to add a nested structure to it, but
> >perhaps I can figure it out somehow...
> >
> >But before I start working on a patch, I would like to know if there is
> >general interest in it. I don't want to work for the trashcan :)
> >
> >
> I think we're all interested, but I'd like to see the POM tags restated
> to be sure we know where it is going. I lost it a bit in the thread.
>
> - Brett
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
Cheers,
Thomas