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

Reply via email to