ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vonnahme, Paul" <Vonnahme.P...@principal.com>
Subject RE: Published jars for test, pilot, and production environments?
Date Thu, 21 May 2009 17:37:02 GMT
> Vonnahme, Paul wrote on 05/19/2009 01:26 PM:
> > I'm hoping someone else is in a similar situation. We have some 
> > utility jars used by multiple projects. These jars have three 
> > different versions: one each for our test, pilot, and production 
> > environments. Therefore I believe each of the versions needs to be 
> > published so it will be available for multiple apps to use.
> >
> 
> Is there any reason not to use varying statuses for the 
> different environments?
> 
> http://ant.apache.org/ivy/history/trunk/settings/statuses.html
> 
> You could either use the default 
> release/milestone/integration statuses to map to your 
> environments, or use your own.
> 
> In your ivy.xml,
> 
>    <dependency org="principal" name="utility_jar" 
> rev="latest.${ivy.build.env}"/>

[OT] I wasn't aware you could use ant variables in the ivy.xml files.  Very good to know,
and I'm sure it will come in handy as I continue to experiment with ivy.

> 
> and run in test environment:
>    ant -Divy.build.env=integration compile
> 
> You can even default the property in ivysettings.xml, with an 
> override=false setting, to ensure your command-line param 
> takes precedence.
> 
> Now just publish your utility modules with the appropriate 
> statuses, and everything should Just Work, right?

I tried this out, and at first it seemed like the answer I had been looking for.  However,
then I noticed a few resolves that weren't happening how I expected.  I found this in the
documentation (http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html):
"latest.[any status]
selects the latest revision of the dependency module with **at least the specified status**."
 (Emphasis mine)

For our environment if I run:
	ant -Divy.build.env=pilot compile
I would need it to compile only with dependencies that have a pilot status.  Since ivy statuses
are hierarchical, I would run the risk of pulling a dependency from a higher status.  

One way I could guarantee the status would be to put
    <status name="${ivy.build.env}" integration="false"/>
as my highest level status.  

I will continue to experiment more with this option as well the option of multiple repositories.

Thanks to all for your responses.

Paul



-----Message Disclaimer-----

This e-mail message is intended only for the use of the individual or
entity to which it is addressed, and may contain information that is
privileged, confidential and exempt from disclosure under applicable law.
If you are not the intended recipient, any dissemination, distribution or
copying of this communication is strictly prohibited. If you have
received this communication in error, please notify us immediately by
reply email to Connect@principal.com and delete or destroy all copies of
the original message and attachments thereto. Email sent to or from the
Principal Financial Group or any of its member companies may be retained
as required by law or regulation.

Nothing in this message is intended to constitute an Electronic signature
for purposes of the Uniform Electronic Transactions Act (UETA) or the
Electronic Signatures in Global and National Commerce Act ("E-Sign")
unless a specific statement to the contrary is included in this message.

While this communication may be used to promote or market a transaction
or an idea that is discussed in the publication, it is intended to provide
general information about the subject matter covered and is provided with
the understanding that The Principal is not rendering legal, accounting,
or tax advice. It is not a marketed opinion and may not be used to avoid
penalties under the Internal Revenue Code. You should consult with
appropriate counsel or other advisors on all matters pertaining to legal,
tax, or accounting obligations and requirements.


Mime
View raw message