I'm seeing now that the situation I had described is not quite accurate. The fact that a public conf extends a private conf has nothing to do with the unresolved dependency. Simply having a private conf in the ivy.xml will cause the problem to crop up: <conf name="abstract" visibility="private" />
For example, the private test configuration in Ivy's own ivy.xml will cause this: configuration not public in org.apache.ant#ivy;2.1.0-rc2: 'test'. It was required from org.apache.ant#ivy-caller;working test I'm beginning to suspect that there's something misconfigured about how I'm resolving. On Mon, Aug 17, 2009 at 10:03 PM, Mitch Gitman <[email protected]> wrote: > I have an ivy.xml file with some confs like so: > <conf name="abstract" visibility="private" /> > <conf name="concrete" extends="abstract" visibility="public" /> > > Note that I have a public Ivy conf extending a private one. Can anyone say > if I'm doing something valid or invalid--and then explain conceptually why? > > I suspect the answer is invalid because when I attempt to do an Ivy resolve > on this published Ivy module, I get an error message like so: > configuration not public in net.nilistics#test-module;1.0: 'abstract'. It > was required from net.nilistics#test-module-caller;working abstract > > I've traced this error message to this passage in the private > *handleConfiguration > *method of *IvyNode*: > } else if (shouldBePublic && !isRoot() > && c.getVisibility() != > Configuration.Visibility.PUBLIC) { > confsToFetch.remove(conf); > if (isConfRequiredByMergedUsageOnly(rootModuleConf, > conf)) { > Message.verbose( > "configuration required by evicted revision is > not visible in " > + "selected revision. skipping " + conf + " in > " + this); > } else { > problem = new RuntimeException("configuration not > public in " + this + ": '" > + c + "'. It was required from " + parent + " " > + parentConf); > } > return false; > } > > I am using Ivy 2.1.0-rc2. >
