ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mitch Gitman <mgit...@gmail.com>
Subject Re: default visibility of public not recognized on publish
Date Sun, 14 Mar 2010 23:16:24 GMT
Maarten, thanks. Good to see this is working in trunk.

Now that I look more carefully at the documentation, I can see that I was
expecting something more than was documented. It's the conf attribute of the
deliver task--not the publish task--that accepts wildcards:
http://ant.apache.org/ivy/history/latest-milestone/use/deliver.html
The publish task's conf attribute says nothing of the sort:
http://ant.apache.org/ivy/history/latest-milestone/use/publish.html

Since publish does an implicit deliver when necessary, I must have been
conflating the two tasks.

For my own sake, rather than use a build off trunk or wait for the next
release, I may just insert an explicit deliver before the publish. Not only
does this honor the existing contract, but if there's an extra weeding out
of confs taking place, I feel more confident breaking this out into an
intermediate step and letting its output (the generated ivy.xml) be the
input to publish.

Still, this is a pretty heavyweight contract, considering that publish by
itself doesn't do one of the things you'd naturally want it to do. So I'm
still glad to see this is fixed. Hope someone updates the publish
documentation accordingly, if they haven't already.

On Sun, Mar 14, 2010 at 3:22 PM, Maarten Coene <maarten_coene@yahoo.com>wrote:

> Mitch,
>
> I'm a bit surprised that specifying "*(public)" in your publish task did
> even work...
> Current SVN trunk contains a fix that should allow you to use "*(public)"
> for publishing.
> Cfr. https://issues.apache.org/jira/browse/IVY-1171
>
> I did a quick test and it seems to work without specifying the visibility
> on the configurations...
>
> regards,
> Maarten
>
>
>
> ----- Original Message ----
> From: Mitch Gitman <mgitman@gmail.com>
> To: ivy-user@ant.apache.org
> Sent: Sun, March 14, 2010 4:45:04 AM
> Subject: default visibility of public not recognized on publish
>
> I'm trying to figure out if this is the expected behavior or it's a bug. If
> it is a bug, please forgive me for reporting what may already be
> well-known.
> I'm using Ivy 2.1.0.
>
> In an ivy.xml file, the conf element's visibility attribute has a default
> value of "public". See:
> http://ant.apache.org/ivy/history/latest-milestone/ivyfile/conf.html
>
> So specifying this:
>    <conf name="default" />
> should be no different from specifying this:
>    <conf name="default" visibility="public" />
>
> Now, I have an artifact associated with the default conf:
>    <artifact name="foo" type="jar" conf="default"/>
>
> Then on my ivy:publish Ant task, I specify: conf="*(public)"
> This is saying I only want to publish the public confs, not the private
> ones.
>
> With this restriction in place, if I explicitly specify
> visibility="public",
> that artifact gets published. But if I don't, it doesn't get published. So
> here's a situation where the default value is not being recognized as the
> default.
>
> By the way, if I take a look at the Ivy file that has been published to the
> repository, I still see:
>    <artifact name="foo" type="jar" conf="default"/>
>
> In my opinion, it's important that the visibility attribute's default value
> of public be recognized in all cases where it's applicable, especially this
> one I've described:
> A. A more rigorous, and arguably more correct, practice is to not publish
> private confs.
> B. Anyone adhering to this practice shouldn't have to be defensive about
> always having to remember to specify visibility="public" on their conf
> elements.
>
> And I can attest, when one does run into this problem, it takes a good deal
> of digging to get to the root.
>
>
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message