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]

Reply via email to