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?

KARR, DAVID | 13 Jan 21:57 2014

Have Ivy check lastModifiedTime for snapshots?

For released artifacts, if I have an entry in the cache, I wouldn't want Ivy to check the repo that it was
obtained from.  However, for SNAPSHOT artifacts, I need Ivy to check to see whether the artifact on the repo
is newer than what I have in the cache.  In the Ivy documentation, in a subsection titled "Changes in module
metadata" there is a reference to a property called "checkModified" which goes on the resolver
definition.  This seems to be what I need.

However, when I tried to add 'checkModified="true"' on my "ibiblio" element that points to our intranet
Nexus repository, it failed with:

"ivysettings.xml: no set method found for checkModified on class org.apache.ivy.plugins.resolver.IBiblioResolver"

KARR, DAVID | 13 Jan 19:52 2014

Can Ivy directly use "pom.xml" instead of "ivy.xml", even for the initial artifact?

I can see that when Ivy uses the "ibiblio" resolver, it's using the "pom.xml" on artifacts to determine
transitive dependencies.

However, how do I make that happen for the initial artifact that I'm building?

I know that the feature set of the "ivy.xml" is slightly different from the "pom.xml", but so far I don't see
any possible conflicts.

If I build an equivalent "pom.xml" for my "ivy.xml" and then move the latter out of the way, Ivy says it can't
find the "ivy.xml" file.

KARR, DAVID | 13 Jan 18:18 2014

How to deal with several "provided" artifacts from different frameworks

I'm continuing to look at the large multi-module Ant build I work with, to see if I could clean this up a bit by
integrating Ivy.

I'm not just looking at how to clean up the build, but to make it easier for developers to work with
checked-out projects in Eclipse.

Besides the somewhat haphazard way we reference simple third-party and internal artifacts (all of which I
see how I can Ivy-ize), we also use two large frameworks that encompass several jars each, and both of those
jar sets are "provided" artifacts, like the use of "provided" artifacts in Maven, where we want to make
them available at compile time, but those artifacts are not to be assembled into the deployable
component, as they will be available at runtime, however the framework does it.

Presently, these "provided" frameworks are specified in our Eclipse projects as "variables", but this is messy.

If I end up specifying these numerous jars in ivy dependencies, it would be nice if I could group them, so it's
clear what list of jars is part of framework "foo", and which is part of framework "bar".  You could do this
with Maven by specifying a pom that just lists those artifacts, and having projects reference that pom.

KARR, DAVID | 10 Jan 22:39 2014

How could I make "retrieve" also copy into local Maven repo, just like Maven does

I just started using Ivy, to help an Ant build that needs to get a local component built from Maven.

What I've done with Ivy all works.  It retrieves the artifacts from either my local Maven repo or our intranet repo.

There is one thing that this doesn't do that I'd like to have happen.

If it doesn't find it in the local Maven repo, it gets it from the intranet repo, but in that case it downloads
it directly from the intranet repo into the "lib" directory of the project.  If this were Maven doing this
build, it would have also copied the artifact into the local Maven repo.  I'd prefer for this to happen.  How
do I set up some "retrieve" magic that would also install the artifact into the local Maven repo?

If it matters, here is an elided version of my "ivysettings.xml":
    <settings defaultResolver="default"/>
    <property name="m2-pattern"
override="false" />
        <chain name="default">
            <filesystem name="local-maven2" m2compatible="true" >
                <artifact pattern="${m2-pattern}"/>
                <ivy pattern="${m2-pattern}"/>
            <ibiblio name="...Snapshots" m2compatible="true"
            <ibiblio name="...Thirdparty" m2compatible="true"
            <ibiblio name="central" m2compatible="true"/>
(Continue reading)

Carsten.Pfeiffer | 27 Dec 16:00 2013

AUTO: Carsten Pfeiffer ist außer Haus (Rückkehr am 08.01.2014)

Ich kehre zurück am 08.01.2014.

In dringenden Fällen, kontaktieren Sie bitte
Erwin<punkt>Tratar<at>gebit<punkt>de oder

Hinweis: Dies ist eine automatische Antwort auf Ihre Nachricht  "Can't get
ivy to resolve transitive dependencies of local modules" gesendet am
27.12.2013 11:46:27.

Diese ist die einzige Benachrichtigung, die Sie empfangen werden, während
diese Person abwesend ist.

BAFFOUR-AWUAH FRANK | 27 Dec 11:49 2013

What does the "default" column in the dependency overview table of ivy reports mean?

I want an explanation for this column in the dependency overview table of the report generated by
<ivy:report/>: default.

I have set my Ivy up to use both a local repository and maven2, and I've noticed this column contains "true"
for my local modules and "false" for maven2 modules. May I know what this column means?
BAFFOUR-AWUAH FRANK | 27 Dec 11:52 2013

What does the "default" attribute of the ivy.xml "info" tag mean?

I have seen the ivy.xml info tag containing a default attribute in resolved ivy.xml files of modules in my
local repository.

What does this "default" attribute mean (it's not mentioned in the Ivy docs), and why does it only appear in
the resolved ivy.xml files of modules resolved from my local repository (it does not appear in resolved
ivy.xml files of modules resolved from maven2)?