Hi Roy, I use ant-contrib in a Ant-based Mojo and it works fine for me.
Here is my ant-contrib declaration in my build.xml: <taskdef resource="net/sf/antcontrib/antlib.xml"> <classpath> <pathelement location="${ant-contrib-jar}" /> </classpath> </taskdef> Note that antcontrib.properties doesn't contain "for" declaration. Prefer antlib.xml. and here is my mojos.xml for ${ant-contrib-jar} parameter: <parameter> <name>ant-contrib-jar</name> <property>ant-contrib-jar</property> <required>true</required> <expression>${ant-contrib-jar}</expression> <defaultValue>${project.build.directory}/antcontrib/ ant-contrib-1.0b3.jar</defaultValue> <type>java.lang.String</type> <description></description> </parameter> Note that I don't use a antcontrib artifact deployed in my local repo, but a antcontrib jar installed in my ${project.build.directory}. I dont't think it change anything. Did you try an echo on your ${settings.localRepository} or ${user.home} to check they are correcty loaded at Maven runtime? Hope it can help, Aurélien 2012/7/27 Manfred Moser <manf...@mosabuam.com> > Why are you not implementing your plugin in Java or even Groovy? > > > http://www.sonatype.com/books/mcookbook/reference/writing-plugins-alternative-sect-writing-groovy.html > > Shell script seems like a bad idea to me if you want it to run everywhere.. > > manfred > > On Fri, July 27, 2012 2:26 pm, Lyons, Roy wrote: > > Update: > > > > Not hearing anything made me give up on pure ant... I was able to get > > things working with the <shellscript shell="ksh"> task, and just > embedding > > kornshell. That, of course, defeats the usual idea of a plugin since it > > is platform specific... but later on, I can add in support for windows > by > > doing a similar shellscript directive with cmd based on the osfamily > task. > > Interestingly, I was able to use both of those from ant-contrib... but > > not <for or <if > > > > Odd. > > > > > > I am still interested in possibilities of using ant in its pure form, so > > any responses to this thread are still welcome. > > > > Thanks, > > > > Roy > > ________________________________________ > > From: Lyons, Roy > > Sent: Friday, July 27, 2012 12:16 PM > > To: Maven Users List > > Subject: RE: Using ant-contrib in ant based plugin development > > > > my webmail made me login again, and I didnt see part of my message was > > missing. here is the full thing: > > > > > > Maven User List, > > > > I waited in sending to this list until after I had exhausted my other > > resources, including google searching, documentation, and experimentation > > of my own. > > > > As such, I hope that your collective minds can take on this challenge. > > > > > > So here is the problem: > > > > [INFO] task-segment: [com.cme.plugins:cme-packaging:cme-packaging] > > (aggregator-style) > > [INFO] > > ------------------------------------------------------------------------ > > [INFO] [cme-packaging:cme-packaging {execution: default-cli}] > > > > cmepackage: > > [echo] We are in UNIX > > [INFO] > > ------------------------------------------------------------------------ > > [ERROR] BUILD ERROR > > [INFO] > > ------------------------------------------------------------------------ > > [INFO] Failed to execute: Executing Ant script: package.build.xml > > [cmepackage]: Failed to execute. > > > > Could not create task or type of type: for. > > > > Ant could not find the task or a class this task relies upon. > > > > This is common and has a number of causes; the usual > > solutions are to read the manual pages then download and > > install needed JAR files, or fix the build file: > > - You have misspelt 'for'. > > Fix: check your spelling. > > - The task needs an external JAR file to execute > > and this is not found at the right place in the classpath. > > > > > > What is extremely interesting to me is the fact that it can use the task > > definition for "osfamily", but not for the "for" task. Also of interest > > to me is the fact that I can use this script with "ant -f" without a > > problem. > > > > Before I get suggestions that I should use java instead, I need to > confess > > that I am only now just learning java. My job in configuration > management > > uses a whole lot more in perl and ksh than anything... > > > > Also, my research showed lots of ways to cope with it in antrun, with an > > inline script -- but that won't do so much for me as I am trying to make > a > > plugin... > > > > Here is my declaration in my pom: > > > > <build> > > <plugins> > > <plugin> > > <artifactId>maven-plugin-plugin</artifactId> > > <version>2.5</version> > > <!-- Add the Ant plugin tools --> > > <dependencies> > > <dependency> > > <groupId>org.apache.maven.plugin-tools</groupId> > > <artifactId>maven-plugin-tools-ant</artifactId> > > <version>2.5</version> > > </dependency> > > <dependency> > > <groupId>ant-contrib</groupId> > > <artifactId>ant-contrib</artifactId> > > <version>1.0b3</version> > > </dependency> > > > > > > I also placed a dependency on ant-contrib in my pom's dependencies > > section. > > > > my build xml has this in it... as you can see, I was experimenting with > > different methods of forcing it to find the items. I have nothing > special > > in mojos xml. Perhaps that is where my issue is? > > > > <project name="processPackages" default="cmepackage" basedir="." > > > <!-- > > <taskdef uri="antlib:net.sf.antcontrib" > > resource="net/sf/antcontrib/antlib.xml" > > classpath="path/to/ant-contrib.jar"/> > > <taskdef resource="net/sf/antcontrib/antlib.xml" /> > > <taskdef resource="net/sf/antcontrib/antcontrib.properties" > > > <classpath> > > <pathelement > > > location="${settings.localRepository}/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar" > > /> > > </classpath> > > </taskdef> > > --> > > <taskdef resource="net/sf/antcontrib/antlib.xml" > > > <classpath refid="maven.plugin.classpath" /> > > </taskdef> > > <target name="cmepackage"> > > <osfamily property="os.family" /> > > <if> > > <equals arg1="${os.family}" arg2="unix" /> > > <then> > > > > > > I had the most luck so far with > > <taskdef resource="net/sf/antcontrib/antcontrib.properties" > > > <classpath> > > <pathelement > > > location="${user.home}/.m2/repository/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar" > > /> > > </classpath> > > </taskdef> > > > > ________________________________________ > > From: Lyons, Roy > > Sent: Friday, July 27, 2012 12:15 PM > > To: Maven Users List > > Subject: Using ant-contrib in ant based plugin development > > > > Maven User List, > > > > I waited in sending to this list until after I had exhausted my other > > resources, including google searching, documentation, and experimentation > > of my own. > > > > As such, I hope that your collective minds can take on this challenge. > > > > > > So here is the problem: > > > > [INFO] task-segment: [com.cme.plugins:cme-packaging:cme-packaging] > > (aggregator-style) > > [INFO] > > ------------------------------------------------------------------------ > > [INFO] [cme-packaging:cme-packaging {execution: default-cli}] > > > > cmepackage: > > [echo] We are in UNIX > > [INFO] > > ------------------------------------------------------------------------ > > [ERROR] BUILD ERROR > > [INFO] > > ------------------------------------------------------------------------ > > [INFO] Failed to execute: Executing Ant script: package.build.xml > > [cmepackage]: Failed to execute. > > > > Could not create task or type of type: for. > > > > Ant could not find the task or a class this task relies upon. > > > > This is common and has a number of causes; the usual > > solutions are to read the manual pages then download and > > install needed JAR files, or fix the build file: > > - You have misspelt 'for'. > > Fix: check your spelling. > > - The task needs an external JAR file to execute > > and this is not found at the right place in the classpath. > > > > > > What is extremely interesting to me is the fact that it can use the task > > definition for > > > > > > > > > > > > > > > > Here is my declaration in my pom: > > > > <build> > > <plugins> > > <plugin> > > <artifactId>maven-plugin-plugin</artifactId> > > <version>2.5</version> > > <!-- Add the Ant plugin tools --> > > <dependencies> > > <dependency> > > <groupId>org.apache.maven.plugin-tools</groupId> > > <artifactId>maven-plugin-tools-ant</artifactId> > > <version>2.5</version> > > </dependency> > > <dependency> > > <groupId>ant-contrib</groupId> > > <artifactId>ant-contrib</artifactId> > > <version>1.0b3</version> > > </dependency> > > > > > > I also placed a dependency on ant-contrib in my pom's dependencies > > section. > > > > my build xml has this in it... as you can see, I was experimenting with > > different methods of forcing it to find the items. I have nothing > special > > in mojos xml. Perhaps that is where my issue is? > > > > <project name="processPackages" default="cmepackage" basedir="." > > > <!-- > > <taskdef uri="antlib:net.sf.antcontrib" > > resource="net/sf/antcontrib/antlib.xml" > > classpath="path/to/ant-contrib.jar"/> > > <taskdef resource="net/sf/antcontrib/antlib.xml" /> > > <taskdef resource="net/sf/antcontrib/antcontrib.properties" > > > <classpath> > > <pathelement > > > location="${settings.localRepository}/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar" > > /> > > </classpath> > > </taskdef> > > --> > > <taskdef resource="net/sf/antcontrib/antlib.xml" > > > <classpath refid="maven.plugin.classpath" /> > > </taskdef> > > <target name="cmepackage"> > > <osfamily property="os.family" /> > > <if> > > <equals arg1="${os.family}" arg2="unix" /> > > <then> > > > > > > I had the most luck so far with > > <taskdef resource="net/sf/antcontrib/antcontrib.properties" > > > <classpath> > > <pathelement > > > location="${user.home}/.m2/repository/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar" > > /> > > </classpath> > > </taskdef> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > > For additional commands, e-mail: users-h...@maven.apache.org > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > > For additional commands, e-mail: users-h...@maven.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > For additional commands, e-mail: users-h...@maven.apache.org > >