Ok, finally getting around to looking into this.
YES!, that was exactly what was happening. Ivy was delivering the
default ivy.xml in my local lib/ folder.
I was trying to take an existing scratchpad folder of a bunch of lib
.jar files and import them into a local ivy repository, so that all the
other java modules would be able to resolve and retrieve from this,
instead of needing to have the ${common-lib} folder set up in each ant
build.xml file.. And in my firs niave approach, I was just creating
file1.ivy.xml file2.ivy.xml in the same lib/ folder, where there was
file1.jar, file2.jar and so on.
And i didn't expect Ivy to create that lib/ivy.xml in the local lib/
folder after publishing to the local repository (I mean, i do want the
ivy.xml and .jar file in the repository, but not really in the local
lib/ folder; I have hand generated the ivy.xml file, as file.ivy.xml and
so on.)
So to work around this, I have just reorganized my scratchpad folder to
contain
file1/
ivy.xml
lib/
file1.jar
file2/
ivy.xml
lib/
file2.jar
and so with these nested folders, while it is likely horribly inelegant,
and likely a better way to do this, for now, the delivered ivy.xml goes
into the local lib/ folder (that i have no use for in this current
approach), and by having it created out of the way, all the wonderful
ivy features now work.!
On 03/08/2010 04:52 PM, Maarten Coene wrote:
Does your repository also contains the ivy.xml file of your logback module?
If not, Ivy will create a default one containing a single publication artifact.
Maarten
----- Original Message ----
From: Travis<[email protected]>
To: [email protected]
Sent: Mon, March 8, 2010 3:29:44 PM
Subject: how to publish and retreive multiple artifacts.
I am trying to set up a local repository where I publish a module that has more
than one .jar file artifact, and then later retrieve the artifacts.
So far it would appear publish into the local repository is working, I do see
all of the artifacts making it into
the local repository folder.
The problem is when I try to resolve the module it appears only the first
artifact file is getting resolved, not the other ones.
using ivy 2.1.0 on ant 1.7.1
The ivy file in the module I am trying to stuff into the local repository. I
just created one for the logback module, but the idea where i wouldhave a
module (e.g. logback) and more than one jar file for api and implementation
pieces (e.g. -core, -classic).
<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info
organisation="qos.ch"
module="logback"
revision="0.9.18"
status="integration"
publication="20091203221300">
</info>
<publications>
<artifact name="logback-core"/>
<artifact name="logback-classic"/>
</publications>
</ivy-module>
where publishing is done in an ant task with
<ivy:resolve file="${file}"/>
<ivy:publish
resolver="internal"
update="true"
overwrite="true"
publishivy="false"
organisation="${org}"
module="${module}"/>
So in the following jar files exist in the local repository folder after
publishing:
logback-core-0.9.18.jar
logback-classic-0.9.18.jar
[ivy:publish] :: publishing :: qos.ch#logback
[ivy:publish] published logback-classic to
/home/thein/.ivy2/local/qos.ch/logback/logback-classic-0.9.18.jar
[ivy:publish] published logback-core to
/home/thein/.ivy2/local/qos.ch/logback/logback-core-0.9.18.jar
And then in the module where I want to resolve it, the ivy.xml dependencies
<dependencies>
<dependency org="qos.ch" name="logback" rev="latest.integration"/>
</dependencies>
And the build.xml uses the default ivy resolve so far.
<ivy:resolve/>
<ivy:retrieve/>
And this does resolve the logback-core jar file, but not the logback-classic
jar file.
At first I had thought this was because the -core jar was the first artifact.
But when I reorder the artifacts list, and clean out the cache and local
repository and re-publish, re-resolve, It still unexpectedly only fetches the
-core one.
<publications>
<artifact name="logback-classic"/>
<artifact name="logback-core"/>
</publications>
So, am I doing it wrong to try to use a single ivy.xml file to define a
'module' that has more than one jar file (e.g. within the same configuration)
to all be resolved at the same time. ?