On 5/3/07, Stefan Arentz <[EMAIL PROTECTED]> wrote:
Actually, I'm still there! :-)I am trying to use Ivy 2.0.0a1 to download snapshot artifacts from a M2 repository. I'm doing this from my own application, directly talking to the Ivy API. Like this: public static void main(String[] args) throws Exception { IvySettings settings = new IvySettings(); ResolveEngine engine = new ResolveEngine(settings, new EventManager(), new SortEngine(settings)); File cache = new File("build/cache"); cache.mkdirs(); ResolveData data = new ResolveData(engine, new ResolveOptions().setCache(CacheManager.getInstance(settings, cache))); settings.setDefaultCache(cache); String ibiblioRoot = "http://snapshots.repository.codehaus.org"; IBiblioResolver resolver = new IBiblioResolver(); resolver.setRoot(ibiblioRoot); resolver.setName("test"); resolver.setSettings(settings); resolver.setM2compatible(true); ModuleRevisionId mrid = ModuleRevisionId.newInstance("org.mortbay.jetty", "cometd-demo", "6.1-SNAPSHOT"); ResolvedModuleRevision rmr = resolver.getDependency(new DefaultDependencyDescriptor(mrid, false), data); DefaultArtifact artifact = new DefaultArtifact(mrid, rmr.getPublicationDate(), "cometd-demo", "war", "war"); DownloadReport report = resolver.download(new Artifact[] {artifact}, new DownloadOptions(settings, cache)); } This basically comes out of the IBiblioResolverTest. This works ok for retrieving artifacts that have a release version in the repository, for example commons-fileupload 2.0. But it does not work for -SNAPSHOT versions like the above cometd-demo 6.1-SNAPSHOT. I've browsed through the Ivy code and it looks like it does not touch the maven-metadata.xml file in the repository to find the latest SNAPSHOT build. Is this something that Ivy simply does not support yet, or am I not using the API in the right way?
To distinct things: * Ivy do not use maven-metadata.xml files now, and this causes some problem, with maven proxy for instance, and maybe also perf, there's an issue planned for 2.0 about the proxy thing at least. But Ivy supports listing revisions without any specific metadata, so this is not really the main problem unless you are using a maven proxy * we haven't implemented SNAPSHOT yet, but it should be fairly easy to get simple case working. Indeed the equivalent in Ivy of SNAPSHOT is a + (1.3-SNAPSHOT would be written 1.3-+ in Ivy) Supporting them like that is as easy as adding a new VersionMatcher, on the basis of SubVersionMatcher. Maybe you could add an issue about that to be sure we don't forget to deal with that (there maybe already one, I don't remember). BTW, your code makes a direct use of a resolver, which is fine to get only one dependency. If you want a more complete dependency resolution solution, you should better use Ivy class, which is a facade for all Ivy services. Feel free to ask for help if you want to go this way. Xavier
S.
-- Learn Ivy at ApacheCon: http://www.eu.apachecon.com/ Manage your dependencies with Ivy! http://incubator.apache.org/ivy/
