Wow, this could do it. Did this make it in 2.4-rc1? Gary
<div>-------- Original message --------</div><div>From: Nicolas Lalevée <nicolas.lale...@hibnet.org> </div><div>Date:04/26/2014 12:55 (GMT-05:00) </div><div>To: ivy-user@ant.apache.org </div><div>Subject: Re: How do I add all jars in a zip as dependencies? </div><div> </div>Maybe you can use a trick. In OSGi, a bundle can be considered as a zip of jars to be added to the classpath. And Ivy-Ant & IvyDE are supporting it (both trunk version though). A such OSGi bundle needs in its MANIFEST.MF to have an entry 'Bundle-Classpath' listing all the paths to the inner jars. So your zip of jar should contain a META-INF/MANIFEST.MF with a such entry. To tell Ivy that the artifact should be processed after download, you should use the "packaging" feature [1]. The ivy.xml of your zip of jars should contains the artifact declaration: <artifact name="my-zip-of-jars" type="jar" ext="zip" packaging="zip" /> Then we must computed the exploded classpath with the OSGI trick. For Ant, you should use the cachepath task with the attribute osgi to true (this is not documented, I forgot it). <cachepath pathid="classpath" conf="default" osgi="true" /> For IvyDE, you should then enable the "Read OSGi metadata" option on the classpath container [2]. This feature is very new (trunk only), so there may be some bugs. You're more than welcomed to report them. Nicolas [1] http://ant.apache.org/ivy/history/trunk/concept.html#packaging [2] http://ant.apache.org/ivy/ivyde/history/trunk/preferences.html#classpath Le 25 avr. 2014 à 23:27, Gary Gregory <garydgreg...@gmail.com> a écrit : > Thank you all for your replies. > > It seems that for all the avenues proposed, I'd have to end up writing an > ivy.xml file, _which is what I want to avoid_. Even if I did that > programmatically, what would it contain based on a directory full of jars? > > Could I just make up dummy org names and module names, since there's not > going to be OSGi type of info in most of these jars files. I guess not > since I'd have to give the file back to Ivy for by calling ivy:resolve. > > What I want is <ivy:resolveJars dir="..." pattern="*.jar" conf="..."/> but > that does not exist :( > > At the end of the day I want the jars on a classpath in IvyDE and Ant. > > In Ant I can do the above easily "make a cp from all the jars over here", > but in IvyDE? I guess I'll have to add them all to the .classpath file, not > great... > > Am I missing something? > > Gary > > > On Fri, Apr 25, 2014 at 3:34 PM, Zac Jacobson <pie....@gmail.com> wrote: > >> I don't know an approach to generate the dependencies lines at build time. >> I think you'd have to by-script or by-hand create the dependency lines in >> an ivy file somewhere. >> >> For a package resolver, when you're defining the package you would also >> define an ivy.xml file with dependencies for each conf in that package. >> Then from your project, you would depend only on your teiid package, and >> let ivy cascade through the dependencies as usual. This would be an >> advantage if you are depending on teiid from multiple projects, you would >> only need to manage those dependencies in one place. >> >> Regardless of where you do this, if there's dependencies in teiid that >> match existing libraries (but named slightly differently) in your primary >> repository, then you can tweak your ivy file to match the module names that >> you're familiar with so you don't get duplicate classes in different jars >> on your classpath. As an aside: I believe this is a large part of the >> motivation behind the ivy roundup project. >> >> Ivy roundup source is available for checkout. I did a quick search around >> in there: have a look at the org.glassfish.jersey module package for an >> example of a larger project with lots of configurations and dependencies. >> >> https://code.google.com/p/ivyroundup/ >> >> Good luck! >> Zac >> >> >> On Fri, Apr 25, 2014 at 12:00 PM, Gary Gregory <garydgreg...@gmail.com >>> wrote: >> >>> Hm... so the package resolver sounds like a nice way to cache downloaded >>> zips and unzip the contents into the ivy cache in one step (albeit a >> heavy >>> step, which is fine.) >>> >>> But... how does this address the meat of my problem: I want all the jars >> in >>> the zip to end up as dependencies for my conf such that my project can be >>> built with Ant and Eclipse IvyDE. >>> >>> If I have to list all 102 dependencies one at a time in dependency >>> elements, then I do not need all of this unzipping and I can do it the >>> 'classic' way... arg. >>> >>> Thoughts? >>> >>> Gary >>> >>> >>> On Fri, Apr 25, 2014 at 11:27 AM, <pie....@gmail.com> wrote: >>> >>>> Could you use the package resolver to fetch the dependency in a way >> that >>>> you don't have to do any explicit manipulations after you have the >>>> artifacts? >>>> >>>> >>> >> http://ant.apache.org/ivy/history/latest-milestone/resolver/packager.html >>>> >>>> It would take some effort to define the package config. >>>> >>>> >>>> Original Message >>>> From: Gary Gregory >>>> Sent: Friday, April 25, 2014 07:49 >>>> To: ivy-user@ant.apache.org >>>> Reply To: ivy-user@ant.apache.org >>>> Subject: How do I add all jars in a zip as dependencies? >>>> >>>> Hi All: >>>> >>>> I am working on a project to embed Teiid (FOSS project from JBoss) in >> our >>>> application. The embedded zip file for this project contains 103 jars >>>> scattered in many directories. Adding the top level jars from this >>> project >>>> through the dependency element with 'transitive' set to truedoes not >> work >>>> because some dependencies fail because some modules include variables >>> like >>>> "org.apache.accumulo#accumulo-core;${version.accumulo}" >>>> >>>> So instead I've created a trigger like this: >>>> >>>> <triggers> >>>> <ant-call target="teiid-unzip" prefix="teiid-unzip" >>>> event="post-download-artifact" filter="organization=org.jboss.teiid AND >>>> module=teiid AND revision=${teiid.version} AND type=zip AND >>>> status=successful"/> >>>> </triggers> >>>> >>>> To unzip the file locally. Next up: how do I add all the jars as >>>> dependencies? Is there a *.jar kind of call I can make/configure? >>>> >>>> Thank you, >>>> Gary >>>> >>>> -- >>>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>>> Java Persistence with Hibernate, Second Edition< >>>> http://www.manning.com/bauer3/> >>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>> Spring Batch in Action <http://www.manning.com/templier/> >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>>> >>> >>> >>> >>> -- >>> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org >>> Java Persistence with Hibernate, Second Edition< >>> http://www.manning.com/bauer3/> >>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>> Spring Batch in Action <http://www.manning.com/templier/> >>> Blog: http://garygregory.wordpress.com >>> Home: http://garygregory.com/ >>> Tweet! http://twitter.com/GaryGregory >>> >> > > > > -- > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > Spring Batch in Action <http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory