KARR, DAVID | 29 Jan 22:03 2014

Can Ivy be used to figure out the correct order to build a set of modules, based on the dependency hierarchy?

With Maven, the modules listed in an aggregator POM are not built in the order they appear in the list, they
are built in the "right" order depending on the dependency relationship between the modules. 
Essentially, the "next" module to be built is the one with no afferent dependencies from any other module
in the list (of the ones remaining to be built).

Does Apache Ivy provide anything like this, if only the ability to generate some of the required pieces, to
be assembled somehow?

maven classifier on ant install task


I've been having a go at using the Ivy Install ant task to create a local
repository based on libraries downloaded from maven central.

Having gone along with the tutorial, all seemed to be working :)


One of the dependencies in my project is json-lib.

It seems that the json-lib project uses a maven classifier to discriminate
between jars suitable for different versions of the jvm.

If I were just declaring a dependency I think I could do this:


However, I'm using install tasks that look like:

<ivy:install organisation="log4j" module="log4j" revision="1.2.17" from="chain"
to="fs1" transitive="true" overwrite="true"/>

How should I declare the "classifier" on an "install" task?

(Continue reading)

KARR, DAVID | 28 Jan 01:20 2014

How to publish additional metadata with an artifact that is needed at retrieve time

I'm trying to envision how I can use Ivy for ATG Dynamo module dependencies.

For background, retrieving a dependent ATG module requires getting the lib, config, and manifest pieces
and copying them into a directory in your local ATG tree with a directory name dependent on the artifact
you're retrieving.  The directory name to use is available in a properties file that is available when the
module is built.

I'm ok with the separate "lib, config, and manifest" pieces, because all of those are packaged in a single
"build" directory when building the module.

However, when retrieving this artifact, I'm unsure how to deal with knowing what directory in the ATG tree
to unzip (not to mention knowing to unzip, not just to copy) the artifact to.  This information is available
when building the module, so it can be available when publishing.

I suppose I could publish an additional file in the zip file which is the properties file used in the build of
the module.  My task which retrieves the artifact could first retrieve the zip, unpack it into a temp
directory, read the properties file that I unpacked, and then copy in everything but the properties file
into the target directory.

I know that most of you won't be familiar with ATG Dynamo, but does any of this make sense?

Drhender | 22 Jan 05:28 2014

Preserving folder structure in Ivy

I have a need to put files into Ivy, such that the sub folder structure is
preserved in the Ivy repository and also in the target machine when I pull
those files back out.

For example, assume I have the following files in my project:

I'd like the existing structure to be reflected in the Ivy repository and
restored when pulled into the cache of the target machine.

Can this be accomplished?  Can someone point me to ivy documents that
provides instructions/examples?


View this message in context: http://apache-ivy.996301.n3.nabble.com/Preserving-folder-structure-in-Ivy-tp9599.html
Sent from the ivy-user mailing list archive at Nabble.com.

opatry | 21 Jan 12:06 2014

Using [status] in artifacts pattern


currently, it is not possible to use the module status as an artifact
pattern (as described here:
but we can use any extra attribute to complete this list.

My questions are:
* why [status] isn't available?
* how can I use it without defining an extra:status attribute to reference


View this message in context: http://apache-ivy.996301.n3.nabble.com/Using-status-in-artifacts-pattern-tp9598.html
Sent from the ivy-user mailing list archive at Nabble.com.

opatry | 21 Jan 10:23 2014

Ivy macrodef doesn't support properties references?


I was wondering if it is a bug or a limitation of Ivy macrodef, but I can't
reference properties declared in the ivysettings.xml in my macros.
When doing so, the output of the resolution displays ${myproperty} instead
of its actual value which indicates that the macro didn't expand it.

Is it a bug or a limitation? If so, it might be indicated in the


View this message in context: http://apache-ivy.996301.n3.nabble.com/Ivy-macrodef-doesn-t-support-properties-references-tp9597.html
Sent from the ivy-user mailing list archive at Nabble.com.

opatry | 21 Jan 09:41 2014

[request] Ivy standalone reference to ivysettings.xml from HTTP


the standalone options of Ivy allows to refer the ivysettings.xml from a
file using the -settings option.
My question is: why can't we refer to a URL? (as in Ant)

Most of the time (AFAIK), the ivysettings.xml will be shared across a whole
company and an easy way to do so is to share it through a HTTP URL (near the
repository most probably).

As a bonus question, Why the Ant API doesn't allow the url attribute for any
kind of URL, not only HTTP. i.e. I can't use the task the same way for
FileSystem or HTTP depending on a property refering the ivysettings.xml:

<ivy:settings url="${ivysettings.xml}" />

Where ivysettings.xml property can be file://… or http://… .

View this message in context: http://apache-ivy.996301.n3.nabble.com/request-Ivy-standalone-reference-to-ivysettings-xml-from-HTTP-tp9596.html
Sent from the ivy-user mailing list archive at Nabble.com.

opatry | 17 Jan 14:40 2014

Ivy artifacts promotion using publish + delivertarget


I try to handle artifacts promotion through Ivy.
I know that the best way to achieve it is to have reproducible builds that
can be invoked twice, a first time with status=integration and the second
time with status=milestone for instance.

For internal reasons, it's hard for now to use such strategy. My idea was to
split repositories by status:

team1-integration, team1-milestone, team1-release
team2-integration, team2-milestone, team2-release

It allow me to easily backup/cleanup my repositories according to artifacts
status and to expose them to other team (not necessarily needed to expose
integration repository but only milestone for QA team, and no need to expose
anything else but release for sales/services teams).

The workflow is the following:
developers work, build, publish using CI in the integration repository
once, the features are implemented and frozen and unit tests pass, the
artifact can be flagged as a milestone for QA team. The QA team test it and
validate (or not). The artifact can be flagged as a release (this step may
be done by sales/service team instead of QA team).

To help those people to promote the artifacts, I aim to provide them an Ant
set of scripts whose main purpose will be to retrieve a given module in a
given version (the accepted/tested one) in a given status and to promote
this module (moving from integration to milestone and milestone to
integration) by republishing it changing the status and choosing the right
(Continue reading)

opatry | 16 Jan 16:38 2014

Ivy cache doesn't handling extra attributes as expected


I already found a similar question:

It's a pretty old question and has not so many answers (useful).

So to resume the issue:

let's say I have a first module defining 3 artifacts with the name/type/ext
but with an extra attribute named "os".

      <artifact type="lib" ext="zip" extra:os="windows" conf="windows"/>
      <artifact type="lib" ext="zip" extra:os="linux" conf="linux"/>
      <artifact type="lib" ext="zip" extra:os="mac" conf="mac"/>
      <artifact type="lib" ext="zip" extra:os="android" conf="android"/>

Now I have two modules that depend on this first one and express the
dependency to fetch only one of the published artifact (depending on the
targeted OS)

module 2:

      <dependency org="myteam" name="module1" rev="1.2.+">
      <artifact name="module1" type="lib" ext="zip" extra:os="ios" />

module 3:

(Continue reading)

KARR, DAVID | 13 Jan 23:37 2014

Ivy Ant tasks can turn off transitive dependencies on "resolve", but IvyDE can only set it for the workspace

I noticed that I can toggle "transitive" on any "resolve" task, so that different projects or dependency
sets can get transitive dependencies or not, but IvyDE only allows a global setting in the workspace.  This
seems like a mismatch.

Is it possible to set an individual dependency in "ivy.xml" to not get transitive dependencies of that
artifact?  If so, would IvyDE respect that, despite the setting of the workspace flag?

KARR, DAVID | 13 Jan 23:04 2014

Can Ivy resolve and retrieve multiple versions of the same artifact?

In our big Ant build, another team provides a jar which is associated with a version of a WSDL.  The classes in
the jar are all JAXB pojos.  The package of all the classes in the jar has the release number as one of the path
elements.  We even use multiple different copies of this jar file in a single build.  These don't conflict
because the package paths are independent.

I've never tried to do this with Maven, but can Ivy have multiple dependencies for the same artifact, but
with different version numbers, so it will resolve and retrieve all of them?