ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xavier Hanin" <xavier.ha...@gmail.com>
Subject Re: Classifier frustration
Date Thu, 17 Apr 2008 10:46:05 GMT
On Thu, Apr 17, 2008 at 11:54 AM, Jim White <jim@pagesmiths.com> wrote:

> Xavier Hanin wrote:
>
>  On Mon, Apr 14, 2008 at 1:30 AM, Jim White <jim@pagesmiths.com> wrote:
> > ...
> >
> > >
> > > Is it possible to use a POM with the Ivy Ant tasks?  What do I need to
> > > do
> > > to use a classifier from the Ant tasks?  It's possible I could use the
> > > Ivy
> > > Java API, but I'm trying to avoid tying my implementation too closely
> > > to
> > > Ivy's internals and Ant tasks are preferred.
> > >
> >
> > Yes you can use poms instead of Ivy files if you prefer, Ivy makes the
> > difference using the file extension: .pom => parses it as a pom,
> > anything
> > else => parses it as an Ivy file. Unless you implement your own parser,
> > which can handle other cases (hint to implement a parser actually
> > supporting
> > the groovy syntax you use :-)).
> >
>
> Well, I was generating a POM with a .pom extension and was getting an
> error.  I will try and get some more details at another time.
>
>  But everything that is supported by Ivy can be done in Ivy files, so you
> > don't need to actually use a pom. The trick to support classifiers in
> > ivy
> > files is to use an extra attribute. Here is an example:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <ivy-module version="1.0" xmlns:m="http://ant.apache.org/ivy/maven">
> >    <info organisation="org.apache"
> >        module="test"
> >        revision="1.0"
> >        status="integration"
> >        publication="20080216150523"
> >    />
> >    <dependencies>
> >        <dependency org="net.sf.json-lib" name="json-lib" rev="2.2.1">
> >            <artifact name="json-lib" type="jar" m:classifier="jdk15"/>
> >        </dependency>
> >    </dependencies>
> > </ivy-module>
> >
> > With your syntax, you will lack xml namespaces (xml not that bad
> > sometimes
> > :-)). But under the hood Ivy see it as a classifier attribute, so if you
> > disable validation as Gilles suggested, or use your own syntax with your
> > own
> > parser and your own validation, you can simply support the classifier
> > attribute.
> >
>
> Actually Groovy's MarkupBuilder does support XML namespaces because it is
> rather literally minded about such things.

That's nice, I didn't know that.


>
>
> http://groovy.codehaus.org/Creating+XML+using+Groovy's+MarkupBuilder<http://groovy.codehaus.org/Creating+XML+using+Groovy%27s+MarkupBuilder>
>
> I put an attribute named 'xmlns:m2' in the root element and then I can do
> this:
>
> XWINGS.IVY {
>   info(organisation:"org.ifcx", module:"WingsIvyTest")
>   dependencies {
>       dependency(org:'net.sf.json-lib', name:'json-lib', rev:'2.2.1'
>           , conf:'default->runtime')
>       {
>           artifact(name:'json-lib', type:'jar'
>               , 'm2:classifier':'jdk15')
>       }
>   }
> }
>
> And that works to get the right artifact the first time.
>
> Now the trouble is that if you change the value of the classifier Ivy
> doesn't notice that the artifact in the local cache is wrong.  I think that
> the classifier needs to be appended to the module name in the cache for this
> to work properly.

You're probably right, could you plse open an issue in jira? Obviously the
workaround is to set the cache pattern yourself.



>
>
>  BTW, if you end up implementing a module descriptor parser for the joy of
> > using a groovy syntax in your metadata, please share the result with the
> > community!
> >
>
> Hmm, I am not a big fan of Groovy builder syntax outside of Groovy
> scripts.
>
> There are folks doing stuff like Gant which is Groovy scripts that use
> AntBuilder and use their own script launching mechanism rather than Ant's,
> and I think that is not a good direction because it fails to effectively
> leverage the support Ant has in so many development environments.
>
> The parsing thing I do want to do though is annotation and Javadoc
> processors that generate Ivy files and/or POM files using syntax like:
>
> /**
>  * @use org="net.sf.json-lib" name="json-lib" rev="2.2.1"
>  */

Neat!


>
>
> Also I'm planning a thing called "OOHTML" that will make creating these
> sorts of files more fun too.

Keep us informed, that sounds like an interesting project.



>
>
>  BTW again :-), I like the idea of using groovy inside Open Office, and
> > even
> > more with Ivy :-)
> >
>
> Thanks!
>
> I also have a thing called "AntAnywhere" which automates making things
> runnable using JavaWebStart.  Ivy integration has been next on the list of
> things to do for that, and will be done eventually I think...
>
> http://www.ifcx.org/wiki/AntAnywhere.html

This is a very interesting project. Nice to see you think about Ivy
integration here too!

Xavier


> <http://www.ifcx.org/wiki/AntAnywhere.html>
>
> Jim
>
>


-- 
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://ant.apache.org/ivy/
http://www.xoocode.org/

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