Greetings all,

I think I have solved my problem. It was not clear to me how to call the deliver task the same way the publish task was calling it. Sadly, I had to hunker down and read some code, but I figured it out. It turns out that the publish task uses artifact patterns to call deliver. What if you give it more than one artifact (as is allowed by the spec)? I refer you to line 187 of src/java/org/apache/ivy/ant/IvyPublish.java:

public String getArtifactspattern() {
return (String) (artifactspattern.isEmpty() ? null : artifactspattern.get(0));
}

Thus, by putting the same pattern in my delivery task as the first artifact in my publish task, I was able to get deliver to behave as I expected (using the "deliverpattern" attribute).

There is no mention of this in the docs, or how deliverpattern is related to artifactpattern (or if there was, I couldn't find it). Could we get this clarified for posterity? Should I file a bug somewhere?

Thanks!

On 05/04/2010 02:32 PM, Carl Myers wrote:
Greetings all,

I am trying to run an XSLT transform on my ivy.xml file before publish.
   Because of the metadata I am inserting, it must be after resolve and
build of the module, however.

  From reading the documentation, it sounds like I need to manually run
the<ivy:deliver>  task instead of letting publish run it for me, then
perform my transform on the delivered ivy file, then publish should see
the file already-delivered and skip the delivery step, and publish my
changed file.

The problem is deliver and publish seem to put the ivy.xml in two
different places.  We do have a proprietary build setup here with lots
of moving pieces so I am trying to locate the configuration for the
publish and deliver steps that causes this to happen.  Can anyone give
me any pointers for how publish figures out where to deliver things to,
or how to tell the deliver task to target a particular location?

Thanks!


--
Carl Myers
Palantir Technologies | Internal Tools Software Engineer
[email protected]

Reply via email to