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]

Reply via email to