Jorg Heymans schrieb:
> Reinhard Poetz wrote:
> 
>> Suppose you have two environments: development (dev) and production
>> (prod). If you create the web application, you might need different
>> .xconf (database connections, root sitemap, ...) values and different
>> properties.
> 
> ...
> 
>> I propose that we have a directory "src/main/webapp-profiles" that
>> contains all files for different profiles:
>>
>> src/main/webapp-profiles/dev/WEB-INF/xconf/cocoon-sitemap.xconf
>> src/main/webapp-profiles/prod/WEB-INF/conf/cocoon-sitemap.xconf
>> src/main/wenbapp-profiles/dev/WEB-INF/properties/core.properties
>> src/main/wenbapp-profiles/prod/WEB-INF/properties/core.properties
> 
> Just fyi, you can define placeholders a la ${my.db.url} in text files
> and have these replaced by maven during build time.
> 
> So you could do
> 
> <build>
>   <filters>
>     <filter>src/main/filters/${env}.properties</filter>
>   </filters>
>   <resources>
>     <resource>
>         ....
>         <filtering>true</filtering>
>         <includes>**/*.xconf</includes>
>     <resource>
>   <resources>
> </build>
> 
> combined with this in settings.xml:
> 
> <profile>
>   <activation>
>   ....
>   <properties>
>     <env>prod</env>
>   </properties>
> </profile>
> 
> Note that ${env} in the pom is resolved to the <env> property in the
> profile.
> 
> That way you wouldn't have to duplicate your configuration files.
> 
> 
And we don't even need maven for this! Cocoon uses a running mode which can
be set as a system property. The definition for this is free, so we ship
Cocoon currently with the values "prod" and "dev". You can refer to
these values directly from within your xconf or your sitemap and
property replacement is done by Cocoon. So if you use
${org.apache.cocoon.mode} instead of ${env} this should already work
without filtering and doesn't require a rebuild for switching!

Carsten

-- 
Carsten Ziegeler - Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/

Reply via email to