You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by il...@ubs.com on 2010/11/22 19:20:04 UTC

Multiple packages with different configuration files

 
Hello,

I am new to this list and may just missed this topic discussion.

I have a web application that I need to compile and package into
war/ear/tar.
This app need to be packaged with different configuration files (server
names/IP addresses) for Dev/QA/Prod environments.
However I don't want to recompile the base code for each environment,
but just package it with appropriate config files.

Which mojo should I use  and how to do this?
I guess this is a trivial and standard requirement.
I would appreciate your help.

Thanks,

Ilya
Please visit our website at 
http://financialservicesinc.ubs.com/wealth/E-maildisclaimer.html 
for important disclosures and information about our e-mail 
policies. For your protection, please do not transmit orders 
or instructions by e-mail or include account numbers, Social 
Security numbers, credit card numbers, passwords, or other 
personal information.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Multiple packages with different configuration files

Posted by Ron Wheeler <rw...@artifact-software.com>.
On 22/11/2010 3:38 PM, Haszlakiewicz, Eric wrote:
> Well those are some rather useless answers.
> JNDI will only "do the job" if you configure it that way.  You need to get that configuration *into* tomcat somehow in the first place, regardless of whether you use JNDI or a properties file.
I was not suggesting that an unconfigured Tomcat would do JNDI on its own.
The goal is to get the server specific configuration out of development 
teams hair and into the operations area.

We started out with bits of server configuration in the applications and 
of course, it caused all kinds of silly errors when the wrong things got 
deployed to the right place and vice versa.
We moved the server specific files into their own project which has 1 
file per server with all the right JNDI for that server.

If you want to make a new server configuration, you just make a new 
server configuration file that you deploy to the Tomcat configuration 
directory.
Developers do not have to worry about building server specific WAR files 
with lots of dancing to get the right setup in the right WAR file or 
worrying about deploying the right combination of WAR files.

Reduced our silly deployment errors.

Ron

> To suggest some options for the original poster:
>    There are several different options to choose which configuration gets used or included in a application package.  One way, which I have used a fair amount, is to include all configurations, and have an environment variable that you set when you run that app that causes it to choose the right file.  The exact method of doing this depends on exactly how your configuration is stored, but it might consist of things like having property references in spring config files, tomcat setenv.sh scripts that pass appropriate java options, or custom java code within your app that looks for the variable settings.
>
> On the other hand, if you want actual, separate application packages, each that only contains a single set of configuration options, well then you're back in the realm of how to get maven to do that for you.  What I've done for this is use profiles with embedded ant tasks that copy the appropriate files into place.  Then to build a dev environment you might do something like "mvn -P dev package".  Of course, you can use any other plugin config within a profile other than the ant plugin, such as having separate assembler plugin configs and include different configuration files that way.
> There's lots of way to do it; I'm not sure what the best one is.
>
> eric
>
>> -----Original Message-----
>> From: Ron Wheeler [mailto:rwheeler@artifact-software.com]
>> Sent: Monday, November 22, 2010 1:03 PM
>> To: users@maven.apache.org
>> Subject: Re: Multiple packages with different configuration files
>>
>>
>> JNDI will do the job on Tomcat.
>>
>> Ron
>>
>>
>> On 22/11/2010 1:47 PM, Antonio Petrelli wrote:
>>> 2010/11/22<il...@ubs.com>:
>>>> This app need to be packaged with different configuration files (server
>>>> names/IP addresses) for Dev/QA/Prod environments.
>>> This kind of info are better put in the server. For example, for
>>> JBoss, you can create a .properties file and put it inside:
>>> <jboss>/server/<yourserver/conf
>>> Everything in the conf directory is available in your classpath.
>>>
>>> Antonio
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>>> For additional commands, e-mail: users-help@maven.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Multiple packages with different configuration files

Posted by Barrie Treloar <ba...@gmail.com>.
On Tue, Nov 23, 2010 at 9:49 AM,  <il...@ubs.com> wrote:
> Eric,
>
> Let me elaborate on the issue. I cannot use profiles as it will create
> only one distribution for me. I need to have the same compiled cod
> bundled with different config files for DEV/QA/PROD. Is there are any
> easy way to create 3 TAR files from one jar or war and include different
> sets of config files within each of them? How can I implement it with
> Assembly mojo?

Apply Dont Repeat Yourself princiiples plus separation of concerns.

As someone already suggested the best way is to make your operations
team take your one EAR and apply the specific environment
configuration as part of the deployment process, how you do this is
specific to you application server.
The general practice appears to be having a directory included on the
application server's classpath and you put your applications specific
config files here.
The operations team need to keep their copies of the configuration
files up to date with any dev changes (like new configuration
variables).
Ideally you want to make this file as small as possible (i.e
production passwords and ip, port, url values)
Any values that are configurable, but dont generally change across
environments, like timeout values should be in another file.  These
values are configurable so you can tweak them without recompiling but
they would normally be the same across all environments. This
configuration file may be bundled in your applications jar, or
deployed into your application server config directory depending on
how easily you want people to be able to tweak these values.

Another approach (which I dont recommend) is to create a maven module
for each environment.
Then you can use the assembly plugin to bundle your EAR plus your per
environment configuration file into your tar.
The problem with this is you have just created X copies of your tar
(and normally it will use a large amount of disk space) where the only
difference is the configuration files.
You've saved your ops team a little effort by creating a single bundle
but you've just made your build/release process a lot slower.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


RE: Multiple packages with different configuration files

Posted by "Yanko, Curtis" <cu...@uhc.com>.
The Assembly plugin can have multiple assemblies defined.

We produce one distribution with ALL configs in it though.
________________________________

Curt Yanko | Continuous Integration Services | UnitedHealth Group IT 
Making IT Happen, one build at a time, 600 times a day
 

> -----Original Message-----
> From: ilya.mayzel@ubs.com [mailto:ilya.mayzel@ubs.com] 
> Sent: Monday, November 22, 2010 6:19 PM
> To: users@maven.apache.org
> Subject: RE: Multiple packages with different configuration files
> 
> Eric,
> 
> Let me elaborate on the issue. I cannot use profiles as it 
> will create only one distribution for me. I need to have the 
> same compiled cod bundled with different config files for 
> DEV/QA/PROD. Is there are any easy way to create 3 TAR files 
> from one jar or war and include different sets of config 
> files within each of them? How can I implement it with Assembly mojo? 
> 
> 
> Thanks
> 
> Ilya Mayzel
> Distributed Change Management
> UBS Financial Services Inc.
> 1000 Harbor Boulevard, 4th Floor
> Weehawken, NJ-07086
> Phone: 201-352-7976
> Email : ilya.mayzel@ubs.com
>  
> -----Original Message-----
> From: Haszlakiewicz, Eric [mailto:EHASZLA@transunion.com]
> Sent: Monday, November 22, 2010 3:38 PM
> To: Maven Users List
> Subject: RE: Multiple packages with different configuration files
> 
> 
> Well those are some rather useless answers.
> JNDI will only "do the job" if you configure it that way.  You need to
> get that configuration *into* tomcat somehow in the first place,
> regardless of whether you use JNDI or a properties file.
> 
> To suggest some options for the original poster:
>   There are several different options to choose which 
> configuration gets
> used or included in a application package.  One way, which I 
> have used a
> fair amount, is to include all configurations, and have an environment
> variable that you set when you run that app that causes it to 
> choose the
> right file.  The exact method of doing this depends on 
> exactly how your
> configuration is stored, but it might consist of things like having
> property references in spring config files, tomcat setenv.sh scripts
> that pass appropriate java options, or custom java code 
> within your app
> that looks for the variable settings.
> 
> On the other hand, if you want actual, separate application packages,
> each that only contains a single set of configuration 
> options, well then
> you're back in the realm of how to get maven to do that for you.  What
> I've done for this is use profiles with embedded ant tasks 
> that copy the
> appropriate files into place.  Then to build a dev 
> environment you might
> do something like "mvn -P dev package".  Of course, you can use any
> other plugin config within a profile other than the ant 
> plugin, such as
> having separate assembler plugin configs and include different
> configuration files that way.
> There's lots of way to do it; I'm not sure what the best one is.
> 
> eric
> 
> >-----Original Message-----
> >From: Ron Wheeler [mailto:rwheeler@artifact-software.com]
> >Sent: Monday, November 22, 2010 1:03 PM
> >To: users@maven.apache.org
> >Subject: Re: Multiple packages with different configuration files
> >
> >
> >JNDI will do the job on Tomcat.
> >
> >Ron
> >
> >
> >On 22/11/2010 1:47 PM, Antonio Petrelli wrote:
> >> 2010/11/22<il...@ubs.com>:
> >>> This app need to be packaged with different configuration files 
> >>> (server names/IP addresses) for Dev/QA/Prod environments.
> >> This kind of info are better put in the server. For example, for 
> >> JBoss, you can create a .properties file and put it inside:
> >> <jboss>/server/<yourserver/conf
> >> Everything in the conf directory is available in your classpath.
> >>
> >> Antonio
> >>
> >> 
> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> >> For additional commands, e-mail: users-help@maven.apache.org
> >>
> >>
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> >For additional commands, e-mail: users-help@maven.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
> 
> Please visit our website at 
> http://financialservicesinc.ubs.com/wealth/E-maildisclaimer.html 
> for important disclosures and information about our e-mail 
> policies. For your protection, please do not transmit orders 
> or instructions by e-mail or include account numbers, Social 
> Security numbers, credit card numbers, passwords, or other 
> personal information.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
> 
> 

This e-mail, including attachments, may include confidential and/or
proprietary information, and may be used only by the person or entity
to which it is addressed. If the reader of this e-mail is not the intended
recipient or his or her authorized agent, the reader is hereby notified
that any dissemination, distribution or copying of this e-mail is
prohibited. If you have received this e-mail in error, please notify the
sender by replying to this message and delete this e-mail immediately.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Multiple packages with different configuration files

Posted by Brian Smith <bm...@gmail.com>.
I believe you can specify multiple executions.

See:

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins

I think you could use the EAR plugin for example with three separate
executions, each with a configuration that excludes different files.

Hope this helps.

On 22 November 2010 23:19, <il...@ubs.com> wrote:

> Eric,
>
> Let me elaborate on the issue. I cannot use profiles as it will create
> only one distribution for me. I need to have the same compiled cod
> bundled with different config files for DEV/QA/PROD. Is there are any
> easy way to create 3 TAR files from one jar or war and include different
> sets of config files within each of them? How can I implement it with
> Assembly mojo?
>
>
> Thanks
>
> Ilya Mayzel
> Distributed Change Management
> UBS Financial Services Inc.
> 1000 Harbor Boulevard, 4th Floor
> Weehawken, NJ-07086
> Phone: 201-352-7976
> Email : ilya.mayzel@ubs.com
>
> -----Original Message-----
> From: Haszlakiewicz, Eric [mailto:EHASZLA@transunion.com]
> Sent: Monday, November 22, 2010 3:38 PM
> To: Maven Users List
> Subject: RE: Multiple packages with different configuration files
>
>
> Well those are some rather useless answers.
> JNDI will only "do the job" if you configure it that way.  You need to
> get that configuration *into* tomcat somehow in the first place,
> regardless of whether you use JNDI or a properties file.
>
> To suggest some options for the original poster:
>  There are several different options to choose which configuration gets
> used or included in a application package.  One way, which I have used a
> fair amount, is to include all configurations, and have an environment
> variable that you set when you run that app that causes it to choose the
> right file.  The exact method of doing this depends on exactly how your
> configuration is stored, but it might consist of things like having
> property references in spring config files, tomcat setenv.sh scripts
> that pass appropriate java options, or custom java code within your app
> that looks for the variable settings.
>
> On the other hand, if you want actual, separate application packages,
> each that only contains a single set of configuration options, well then
> you're back in the realm of how to get maven to do that for you.  What
> I've done for this is use profiles with embedded ant tasks that copy the
> appropriate files into place.  Then to build a dev environment you might
> do something like "mvn -P dev package".  Of course, you can use any
> other plugin config within a profile other than the ant plugin, such as
> having separate assembler plugin configs and include different
> configuration files that way.
> There's lots of way to do it; I'm not sure what the best one is.
>
> eric
>
> >-----Original Message-----
> >From: Ron Wheeler [mailto:rwheeler@artifact-software.com]
> >Sent: Monday, November 22, 2010 1:03 PM
> >To: users@maven.apache.org
> >Subject: Re: Multiple packages with different configuration files
> >
> >
> >JNDI will do the job on Tomcat.
> >
> >Ron
> >
> >
> >On 22/11/2010 1:47 PM, Antonio Petrelli wrote:
> >> 2010/11/22<il...@ubs.com>:
> >>> This app need to be packaged with different configuration files
> >>> (server names/IP addresses) for Dev/QA/Prod environments.
> >> This kind of info are better put in the server. For example, for
> >> JBoss, you can create a .properties file and put it inside:
> >> <jboss>/server/<yourserver/conf
> >> Everything in the conf directory is available in your classpath.
> >>
> >> Antonio
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> >> For additional commands, e-mail: users-help@maven.apache.org
> >>
> >>
> >
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> >For additional commands, e-mail: users-help@maven.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
> Please visit our website at
> http://financialservicesinc.ubs.com/wealth/E-maildisclaimer.html
> for important disclosures and information about our e-mail
> policies. For your protection, please do not transmit orders
> or instructions by e-mail or include account numbers, Social
> Security numbers, credit card numbers, passwords, or other
> personal information.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>

RE: Multiple packages with different configuration files

Posted by il...@ubs.com.
Eric,

Let me elaborate on the issue. I cannot use profiles as it will create
only one distribution for me. I need to have the same compiled cod
bundled with different config files for DEV/QA/PROD. Is there are any
easy way to create 3 TAR files from one jar or war and include different
sets of config files within each of them? How can I implement it with
Assembly mojo? 


Thanks

Ilya Mayzel
Distributed Change Management
UBS Financial Services Inc.
1000 Harbor Boulevard, 4th Floor
Weehawken, NJ-07086
Phone: 201-352-7976
Email : ilya.mayzel@ubs.com
 
-----Original Message-----
From: Haszlakiewicz, Eric [mailto:EHASZLA@transunion.com] 
Sent: Monday, November 22, 2010 3:38 PM
To: Maven Users List
Subject: RE: Multiple packages with different configuration files


Well those are some rather useless answers.
JNDI will only "do the job" if you configure it that way.  You need to
get that configuration *into* tomcat somehow in the first place,
regardless of whether you use JNDI or a properties file.

To suggest some options for the original poster:
  There are several different options to choose which configuration gets
used or included in a application package.  One way, which I have used a
fair amount, is to include all configurations, and have an environment
variable that you set when you run that app that causes it to choose the
right file.  The exact method of doing this depends on exactly how your
configuration is stored, but it might consist of things like having
property references in spring config files, tomcat setenv.sh scripts
that pass appropriate java options, or custom java code within your app
that looks for the variable settings.

On the other hand, if you want actual, separate application packages,
each that only contains a single set of configuration options, well then
you're back in the realm of how to get maven to do that for you.  What
I've done for this is use profiles with embedded ant tasks that copy the
appropriate files into place.  Then to build a dev environment you might
do something like "mvn -P dev package".  Of course, you can use any
other plugin config within a profile other than the ant plugin, such as
having separate assembler plugin configs and include different
configuration files that way.
There's lots of way to do it; I'm not sure what the best one is.

eric

>-----Original Message-----
>From: Ron Wheeler [mailto:rwheeler@artifact-software.com]
>Sent: Monday, November 22, 2010 1:03 PM
>To: users@maven.apache.org
>Subject: Re: Multiple packages with different configuration files
>
>
>JNDI will do the job on Tomcat.
>
>Ron
>
>
>On 22/11/2010 1:47 PM, Antonio Petrelli wrote:
>> 2010/11/22<il...@ubs.com>:
>>> This app need to be packaged with different configuration files 
>>> (server names/IP addresses) for Dev/QA/Prod environments.
>> This kind of info are better put in the server. For example, for 
>> JBoss, you can create a .properties file and put it inside:
>> <jboss>/server/<yourserver/conf
>> Everything in the conf directory is available in your classpath.
>>
>> Antonio
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>For additional commands, e-mail: users-help@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org

Please visit our website at 
http://financialservicesinc.ubs.com/wealth/E-maildisclaimer.html 
for important disclosures and information about our e-mail 
policies. For your protection, please do not transmit orders 
or instructions by e-mail or include account numbers, Social 
Security numbers, credit card numbers, passwords, or other 
personal information.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


RE: Multiple packages with different configuration files

Posted by "Haszlakiewicz, Eric" <EH...@transunion.com>.
Well those are some rather useless answers.
JNDI will only "do the job" if you configure it that way.  You need to get that configuration *into* tomcat somehow in the first place, regardless of whether you use JNDI or a properties file.

To suggest some options for the original poster:
  There are several different options to choose which configuration gets used or included in a application package.  One way, which I have used a fair amount, is to include all configurations, and have an environment variable that you set when you run that app that causes it to choose the right file.  The exact method of doing this depends on exactly how your configuration is stored, but it might consist of things like having property references in spring config files, tomcat setenv.sh scripts that pass appropriate java options, or custom java code within your app that looks for the variable settings.

On the other hand, if you want actual, separate application packages, each that only contains a single set of configuration options, well then you're back in the realm of how to get maven to do that for you.  What I've done for this is use profiles with embedded ant tasks that copy the appropriate files into place.  Then to build a dev environment you might do something like "mvn -P dev package".  Of course, you can use any other plugin config within a profile other than the ant plugin, such as having separate assembler plugin configs and include different configuration files that way.
There's lots of way to do it; I'm not sure what the best one is.

eric

>-----Original Message-----
>From: Ron Wheeler [mailto:rwheeler@artifact-software.com]
>Sent: Monday, November 22, 2010 1:03 PM
>To: users@maven.apache.org
>Subject: Re: Multiple packages with different configuration files
>
>
>JNDI will do the job on Tomcat.
>
>Ron
>
>
>On 22/11/2010 1:47 PM, Antonio Petrelli wrote:
>> 2010/11/22<il...@ubs.com>:
>>> This app need to be packaged with different configuration files (server
>>> names/IP addresses) for Dev/QA/Prod environments.
>> This kind of info are better put in the server. For example, for
>> JBoss, you can create a .properties file and put it inside:
>> <jboss>/server/<yourserver/conf
>> Everything in the conf directory is available in your classpath.
>>
>> Antonio
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>> For additional commands, e-mail: users-help@maven.apache.org
>>
>>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
>For additional commands, e-mail: users-help@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Multiple packages with different configuration files

Posted by Ron Wheeler <rw...@artifact-software.com>.
JNDI will do the job on Tomcat.

Ron


On 22/11/2010 1:47 PM, Antonio Petrelli wrote:
> 2010/11/22<il...@ubs.com>:
>> This app need to be packaged with different configuration files (server
>> names/IP addresses) for Dev/QA/Prod environments.
> This kind of info are better put in the server. For example, for
> JBoss, you can create a .properties file and put it inside:
> <jboss>/server/<yourserver/conf
> Everything in the conf directory is available in your classpath.
>
> Antonio
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Multiple packages with different configuration files

Posted by Antonio Petrelli <an...@gmail.com>.
2010/11/22  <il...@ubs.com>:
> This app need to be packaged with different configuration files (server
> names/IP addresses) for Dev/QA/Prod environments.

This kind of info are better put in the server. For example, for
JBoss, you can create a .properties file and put it inside:
<jboss>/server/<yourserver/conf
Everything in the conf directory is available in your classpath.

Antonio

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org