It turns out that the main method of org.apache.uima.tools.jcasgen.Jg was, in version 2.2.2, a single line of code which called a method called main0. In version 2.3.0 there are two lines of code - the second is a call to System.exit. This was the source of my problems and explains (sort of) why eclipse was actually crashing silently when I updated the dependency on uima in my pom.xml file to version 2.3.0.

My workaround is to simply introduce a local class whose main method only has the one line of code and I call that class instead.

Ramon, thanks again for the pom.xml snippet. We actually use the execution phase "process-resources" or "process-test-resources" depending on the scenario and that seems to work fine for us.

Philip


On 6/18/2010 2:50 PM, Philip Ogren wrote:
Hi,

We have been using a snippet for our pom.xml file pretty much exactly like the one below to run JCasGen on our type system descriptor before compilation. When I switched to 2.3.0 this doesn't work anymore. For example, when I run "mvn test", JCasGen will generate the files but then maven just exits without an error message and without running the tests. If I remove this block of xml from the pom, then everything works fine.

Any thoughts about how I would go about fixing this? Or, does anyone have another snippet of xml I could insert into my pom.xml to get the same behavior?

Thanks,
Philip

On 7/6/2009 7:58 AM, Ramon Ziai wrote:
Hi,

just as a follow-up to this, I found a solution to this that works for
me. Here's the relevant POM snippet, in the hope that it will be useful
for others:

[...]
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>org.apache.uima.tools.jcasgen.Jg</mainClass>
<arguments>
<argument>-jcasgeninput</argument>
<argument>desc/yourTypeSystem.xml</argument>
<argument>-jcasgenoutput</argument>
<argument>src/main/java</argument>
</arguments>
</configuration>
</plugin>
[...]

This will run JCasGen prior to the compile phase, ensuring that build
dependencies are satisfied. JCasGen is run without the merge capability,
so manual changes to the generated Java files will be lost.

Best,
Ramon

Александър Л. Димитров schrieb:
Hello,

I'm currently working on a distributed project involving UIMA. At this stage, sometimes modifications to the UIMA descriptor files are absolutely necessary and, unfortunately, this confuses our VCS. Whenever JCasGen is run from within Eclipse or similar, it updates *all* generated class files, which leads the VCS
to treating them as new commits. The problem here is, when editing the
descriptors on different branches, while the merging of the descriptor files goes well most of the time, the merging of the class files fails most of the
time. This leaves the merger with several dozen conflicts.

The current policy is to then just delete those files and run JCasGen on the merged branch. Of course, the actual problem here is, that one shouldn't really
track those files in the first place.

But the matter is slightly more delicate. After checking out the project from version control, the project should be readily compilable, without further setup. That's why we're using Maven to fetch all dependencies and automate the build process. Without having these files in source control, they have to be
generated first.

So the real question is: is there any way to run a JCasGen from within the Maven build? Probably a plugin? Of course, one could just spawn a process to call org.apache.uima.tools.jcasgen.Jg, but I wanted to ask if such a thing already
existed.

Thanks,
Aleks



No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.829 / Virus Database: 271.1.1/2946 - Release Date: 06/18/10 
00:35:00

Reply via email to