A simple fork=yes would have done the job. On Fri, Jul 3, 2009 at 12:01 PM, clconway<[email protected]> wrote: > > The problem seems to be that Rats! calls System.exit() (or similar), > terminating the JVM. I would have thought that Ant would wrap this (the java > task is copied over from a build.xml and it doesn't terminate the Ant > build), but the following works by forcing the Rats! process into a separate > JVM: > > <plugin> > <groupId>org.codehaus.mojo</groupId> > <artifactId>exec-maven-plugin</artifactId> > <version>1.1</version> > <executions> > <execution> > <phase>generate-sources</phase> > <goals> > <goal>exec</goal> > </goals> > </execution> > </executions> > <configuration> > <executable>java</executable> > <arguments> > <argument>-classpath</argument> > <argument>${basedir}/lib/xtc.jar</argument> > <argument>xtc.parser.Rats</argument> > <argument>-in</argument> > <argument>${project.build.sourceDirectory}</argument> > <argument>-out</argument> > > <argument>${project.build.directory}/generated-sources/main/java/</argument> > <argument>${project.build.sourceDirectory}/Dot.rats</argument> > </arguments> > </configuration> > </plugin> > > -Chris > > > clconway wrote: >> >> Funny story. I tried replacing the Ant task with a Maven plugin, by >> writing a RatsMojo class that invokes xtc.parser.Rats directly and >> replacing the plugin element above with >> >> <plugin> >> <groupId>edu.nyu.xtc</groupId> >> <artifactId>maven-xtc-plugin</artifactId> >> <executions> >> <execution> >> <phase>generate-sources</phase> >> <goals> >> <goal>rats</goal> >> </goals> >> <configuration> >> >> <inputDirectory>${project.build.sourceDirectory}</inputDirectory> >> <outputDirectory> >> ${project.build.directory}/generated-sources/main/java</outputDirectory> >> >> <grammarFile>${project.build.sourceDirectory}/Dot.rats</grammarFile> >> </configuration> >> </execution> >> </executions> >> </plugin> >> >> It does the exact same thing: it runs Rats! then terminates without >> compiling *any* of the Java files in the project. >> >> RatsMojo.java is attached. >> >> -Chris >> http://www.nabble.com/file/p24314823/RatsMojo.java RatsMojo.java >> >> >> clconway wrote: >>> >>> My project generates source code using the XTC parser generator >>> (http://cs.nyu.edu/rgrimm/xtc/). XTC doesn't have a Maven plugin that >>> I'm aware of, so I'm trying to build the parser using an Ant Java >>> task, like so: >>> >>> <plugin> >>> <artifactId>maven-antrun-plugin</artifactId> >>> <executions> >>> <execution> >>> <phase>generate-sources</phase> >>> <configuration> >>> <tasks> >>> <mkdir >>> dir="${project.build.directory}/generated-sources/main/java/" /> >>> <java classpath="lib/xtc.jar" >>> classname="xtc.parser.Rats"> >>> <arg line="-in ${project.build.sourceDirectory}" /> >>> <arg line="-out >>> ${project.build.directory}/generated-sources/main/java/" /> >>> <arg path="${project.build.sourceDirectory}/Dot.rats" >>> /> >>> </java> >>> </tasks> >>> <sourceRoot> >>> ${project.build.directory}/generated-sources/main/java >>> </sourceRoot> >>> </configuration> >>> <goals> >>> <goal>run</goal> >>> </goals> >>> </execution> >>> </executions> >>> </plugin> >>> >>> The details of what XTC does aren't important: the end result is that >>> the above generates Dot.java and places it in >>> target/generated-sources/main/java. It works fine. >>> >>> The problem is that, with this plugin element in my pom.xml, none of >>> the Java files in the project get compiled. In a project generated >>> using "mvn archetype:create -DgroupId=foo -DartifactId=bar", if I run >>> "mvn compile" without the plugin element, I get: >>> >>> $ mvn compile >>> [INFO] Scanning for projects... >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Building bar >>> [INFO] task-segment: [compile] >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] [resources:resources] >>> [INFO] Using default encoding to copy filtered resources. >>> [INFO] [compiler:compile] >>> [INFO] Compiling 1 source file to >>> /home/chris/src/tests/maven/project1/bar/target/classes >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] BUILD SUCCESSFUL >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Total time: 1 second >>> [INFO] Finished at: Wed Jul 01 18:57:08 EDT 2009 >>> [INFO] Final Memory: 6M/67M >>> [INFO] >>> ------------------------------------------------------------------------ >>> >>> Whereas with the plugin element invoking XTC, I get (after a "mvn >>> clean"): >>> >>> $ mvn compile >>> [INFO] Scanning for projects... >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Building bar >>> [INFO] task-segment: [compile] >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] [antrun:run {execution: default}] >>> [INFO] Executing tasks >>> [mkdir] Created dir: >>> /home/chris/src/tests/maven/project1/bar/target/generated-sources/main/java >>> Rats! Parser Generator, v. 1.14.2, (C) 2004-2008 Robert Grimm >>> Processing >>> /home/chris/src/tests/maven/project1/bar/src/main/java/Dot.rats ... >>> >>> The XTC process is not failing, AFAICT. >>> >>> I've tried other kinds of Ant tasks and they don't interfere with Java >>> compilation. For example, if I replace the task element above with an >>> echo task >>> >>> <tasks> >>> <mkdir >>> dir="${project.build.directory}/generated-sources/main/java/" /> >>> <echo >>> file="${project.build.directory}/generated-sources/main/java/Dot.java"> >>> public class Dot { } >>> </echo> >>> </tasks> >>> >>> I get >>> >>> $ mvn compile >>> [INFO] Scanning for projects... >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Building bar >>> [INFO] task-segment: [compile] >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] [antrun:run {execution: default}] >>> [INFO] Executing tasks >>> [INFO] Executed tasks >>> [INFO] Registering compile source root >>> /home/chris/src/tests/maven/project1/bar/target/generated-sources/main/java >>> [INFO] [resources:resources] >>> [INFO] Using default encoding to copy filtered resources. >>> [INFO] [compiler:compile] >>> [INFO] Compiling 2 source files to >>> /home/chris/src/tests/maven/project1/bar/target/classes >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] BUILD SUCCESSFUL >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Total time: 2 seconds >>> [INFO] Finished at: Wed Jul 01 19:03:34 EDT 2009 >>> [INFO] Final Memory: 7M/79M >>> [INFO] >>> ------------------------------------------------------------------------ >>> >>> Obviously there's something I'm not understanding about how Maven >>> executes the java task. Is there something simple that I'm doing >>> wrong? Is there an alternative way to accomplish this task that I >>> should try (perhaps a more "Maven-native" way)? >>> >>> The full pom.xml is attached. >>> >>> Regards, >>> Chris >>> >>> <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>foo</groupId> >>> <artifactId>bar</artifactId> >>> <packaging>jar</packaging> >>> <version>1.0-SNAPSHOT</version> >>> <name>bar</name> >>> <url>http://maven.apache.org</url> >>> <dependencies> >>> <dependency> >>> <groupId>junit</groupId> >>> <artifactId>junit</artifactId> >>> <version>3.8.1</version> >>> <scope>test</scope> >>> </dependency> >>> <dependency> >>> <groupId>xtc</groupId> >>> <artifactId>xtc</artifactId> >>> <version>1.14.2</version> >>> <scope>system</scope> >>> <systemPath>${basedir}/lib/xtc.jar</systemPath> >>> </dependency> >>> </dependencies> >>> <build> >>> <plugins> >>> <!-- Run Rats! on some files --> >>> <plugin> >>> <artifactId>maven-antrun-plugin</artifactId> >>> <executions> >>> <execution> >>> <phase>generate-sources</phase> >>> <configuration> >>> <tasks> >>> <mkdir >>> dir="${project.build.directory}/generated-sources/main/java/" /> >>> <java classpath="lib/xtc.jar" >>> classname="xtc.parser.Rats"> >>> <arg line="-in ${project.build.sourceDirectory}" /> >>> <arg line="-out >>> ${project.build.directory}/generated-sources/main/java/" /> >>> <arg path="${project.build.sourceDirectory}/Dot.rats" >>> /> >>> </java> >>> <!-- <echo >>> file="${project.build.directory}/generated-sources/main/java/Dot.java"> >>> --> >>> <!-- public class Dot { } --> >>> <!-- </echo> --> >>> </tasks> >>> <sourceRoot> >>> ${project.build.directory}/generated-sources/main/java >>> </sourceRoot> >>> </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] >>> >> >> > > -- > View this message in context: > http://www.nabble.com/maven-antrun-plugin%3A-Java-classes-don%27t-compile-after-an-Ant-task-tp24300991p24325361.html > Sent from the Maven - Users mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > 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]
