OK, well, I still don't have a solution as to why this doesn't work :) But I've figured out a way to "make it go" at least :)
http://www.nabble.com/Classloader-issue-with-ant-optional-tasks-in-a-hie rarchical-structure-tf2431669s177.html#a6780357 That earlier post (October 12, 2006) showed someone with a similar problem. The problem appears to be that if the maven-antrun-plugin is called BEFORE you declare the dependencies as in below (i.e. from a different level pom in the project), then these dependencies will be IGNORED So you have to include the dependencies mentioned in the above link, in the format in the above link, in the first call to maven-antrun-plugin in the project. So, basically, you need to do it in the super pom. And if you want it to work in the "child" pom, I guess you have to do it there too. Any suggestions on how to make that work easier? Perhaps a way of defining plugin dependencies in the parent pom without calling them, so that if the plugin is called anywhere in the child, it will inherit those dependencies properly? Thanks, Dana Lacoste -----Original Message----- From: Lacoste, Dana Sent: Thursday, April 05, 2007 10:06 AM To: [email protected] Subject: Problem with replaceregexp in maven 2 After much googling and attempting to find out how to make this work, I'm emailing for help :) The ant optional task "replaceregexp" replaces the contents of a file by using a regular expression. Because there are multiple regexp libraries, ant loads the regexp class selected by a property after the replaceregexp class is loaded. See http://ant.apache.org/manual/OptionalTasks/replaceregexp.html for info on the task or for more info on the regexp mapping, see: http://ant.apache.org/manual/CoreTypes/regexp.html#implementation So the simplest build.xml would look like this: <project name="testrun"> <property name="ant.regexp.regexpimpl" value="org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp" /> <target name="dochange"> <echo>Classpath ${compileClasspath}</echo> <taskdef name="replaceregexp" classname="org.apache.tools.ant.taskdefs.optional.ReplaceRegExp"> <classpath path="${compileClasspath}"/> </taskdef> <replaceregexp file='${basedir}/test.h' match='define VERSION' replace='define TEST' /> </target> </project> with test.h having the contents simply "define VERSION" and running out-of-the-box binary distribution ant 1.6.5, this works fine. Doing this in maven, though, has issues: maven's filter doesn't do regular expressions, so I decided to call the build.xml using antrun. Note the commented-out dependencies from when I tried all of the different regexp implementations! Running out-of-the-box maven 2.0.4 I get the following error. The class in question (org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp) is actually INSIDE the same .jar file that contains the replaceregexp (org.apache.tools.ant.taskdefs.optional.ReplaceRegExp) : ant-nodeps.jar Any suggestions? From googling, I've seen that the maven 1.1 way to deal with this was to make the dependencies use "classloader root" but that's not valid syntax in maven 2! Thanks for any help or suggestions! Dana Lacoste San Diego, CA --- error output --- $ mvn process-resources [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ ---- [INFO] Building Test Project [INFO] task-segment: [process-resources] [INFO] ------------------------------------------------------------------------ ---- [INFO] [antrun:run {execution: update-version}] [INFO] Executing tasks dochange: [echo] Classpath C:\DOCUME~1\LACOSTE\d\target\classes;C:\Documents and Settings\lacoste\.m2\repository\ant\ant-nodeps\1.6.5\ant-nodeps-1.6.5.ja r Trying to override old definition of datatype replaceregexp [INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Error executing ant tasks Embedded error: The following error occurred while executing this line: C:\DOCUME~1\LACOSTE\d\build.xml:11: java.lang.ClassNotFoundException: org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp [INFO] ------------------------------------------------------------------------ [INFO] For more information, run Maven with the -e switch [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 second [INFO] Finished at: Thu Apr 05 10:02:39 PDT 2007 [INFO] Final Memory: 2M/4M [INFO] ------------------------------------------------------------------------ --- pom.xml --- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example.project</groupId> <version>1.00-SNAPSHOT</version> <artifactId>project</artifactId> <packaging>pom</packaging> <name>Test Project</name> <dependencies> <!-- <dependency> <groupId>oro</groupId> <artifactId>oro</artifactId> <version>2.0.8</version> <scope>compile</scope> </dependency> <dependency> <groupId>ant</groupId> <artifactId>ant-jakarta-oro</artifactId> <version>1.6.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>ant</groupId> <artifactId>ant-apache-oro</artifactId> <version>1.6.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>ant</groupId> <artifactId>ant-apache-regexp</artifactId> <version>1.6.5</version> </dependency> <dependency> <groupId>jakarta-regexp</groupId> <artifactId>jakarta-regexp</artifactId> <version>1.4</version> </dependency> --> <dependency> <groupId>ant</groupId> <artifactId>ant-nodeps</artifactId> <version>1.6.5</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>update-version</id> <phase>process-resources</phase> <configuration> <tasks> <property name="compileClasspath" refid="maven.compile.classpath"/> <ant antfile="build.xml" dir="." target="dochange" inheritRefs="true"/> <!-- <taskdef name="replaceregexp" classname="org.apache.tools.ant.taskdefs.optional.ReplaceRegExp"> <classpath refid="maven.compile.classpath" /> </taskdef> <property name="ant.regexp.regexpimpl" value="org.apache.tools.ant.util.regexp.JakartaRegexpRegexp"/> <property name="ant.regexp.regexpimpl" value="org.apache.tools.ant.util.regexp.JakartaOroRegexp"/> <property name="ant.regexp.regexpimpl" value="org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp"/> <replaceregexp file='${basedir}/test.h' match='define VERSION' replace='define TEST' /> --> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
