[ 
https://issues.apache.org/jira/browse/UIMA-2953?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13697879#comment-13697879
 ] 

Marshall Schor commented on UIMA-2953:
--------------------------------------

Yes, I think this is to be something of a mutual education :-) - having not 
used uimaFIT myself :-).

First some minor editing:  I assume you mean in Case 1: .... one or more 
dedicated Maven modules ... to be ... one or more dedicated UIMA modules ... ?  

Second, apologies for this long ramble...

Some clarifications: 
  * JCasGen always does a complete import of all things (AE descriptors, type 
system descriptors, etc.) and uses core UIMA to form the merged type system.  
All UIMA-1176 does is limit which cover classes get generated from all of the 
defined types.
  * I was thinking of the module as typically being an Eclipse "Project" which 
contained both annotator implementation Java code, as well as an Analysis 
Engine XML Descriptor for that which specified the externalized meta-data for 
the Annotator: the type system, the inputs/ outputs, the parameters, any 
special indexes, resources, etc.

I was thinking there are 2 use cases - the uimaFIT style, where descriptors are 
not used (?) and the UIMA style, using XML descriptors.  In the latter, type 
systems are put together from collections of specifications.  These collections 
are done using imports, which occur in two places (for type systems): within 
type system descriptions themselves, and also within aggregate analysis 
descriptors, where the delegates are typically specified using imports. 

So the spec of what things go together is provided in the XML descriptors, via 
the import statements.  If this exists, that's what I think the ant-like 
patterns would be replicating.  If this doesn't exist (here I'm guessing - 
perhaps because the uimaFIT style isn't using these descriptors), the ant-like 
pattern isn't replicating this.  

The use case that motivate UIMA-1176 was, as you thought, where people would 
create an Eclipse project, and put annotator code plus an annotator analysis 
engine description (which, in turn, would include a type system, which perhaps 
had imports of other type systems).  The JCasGen operation would generate the 
source code and put it into this Eclipse project's sources, so that when a Jar 
was made for this, it would include both the annotator implementation, and the 
corresponding JCas classes (excluding imports of type systems not defined 
within this project).  This seemed like a modular packaging.

This use-case corresponds to your "Case 2" I think.  UIMA-1176 helps case 2, 
where the AE module might depend on other similarly packaged Analysis Engines, 
and would therefore get their JCas cover classes by depending on these other 
projects (which would be defining them). 

In "Case 2" - if there were multiple top level descriptors, say for 2 
configurations of a particular AE, where the Types produced were different, I 
can see where one might want to specify multiple top level descriptors to 
jcasgen-maven-plugin.  I haven't seen or heard about this use case myself, 
however; it seems to me that when people design an annotator, they have a 
single idea about what it's producing, and want to provide JCas cover classes 
for that.  Have you seen this?

For large projects, I've seen "Case 1" style, where a group collectively 
decides to put a large collection of types into a "shared" Eclipse project, 
which they might call their "model".  I can imagine that there might *not* be a 
single common type system spec which specified all of the type system 
descriptors, and how this could create the need for the build tool to specify 
multiple top descriptors.
                
> jcasgen-maven-plugin needs to support patterns
> ----------------------------------------------
>
>                 Key: UIMA-2953
>                 URL: https://issues.apache.org/jira/browse/UIMA-2953
>             Project: UIMA
>          Issue Type: Improvement
>          Components: jcasgen-maven-plugin
>            Reporter: Richard Eckart de Castilho
>            Assignee: Richard Eckart de Castilho
>             Fix For: 2.4.1SDK
>
>
> With the old JCasGenPomFriendly class in uimaFIT, it was possible to select 
> the descriptors for which JCas wrappers should be generated using a wildcard 
> pattern:
> {noformat}
> <configuration>
>   <mainClass>org.apache.uima.fit.util.JCasGenPomFriendly</mainClass>
>   <arguments>
>     
> <argument>file:${project.basedir}/src/test/resources/org/apache/uima/fit/type/**/*.xml</argument>
>     <argument>${project.build.directory}/generated-sources/jcasgen</argument>
>   </arguments>
>   <classpathScope>test</classpathScope>
> </configuration>
> {noformat}
> With the current jcasgen-maven-plugin, only a single descriptor file is 
> possible. This is quite inconvenient for users. At least there should be the 
> same possibility of specifying a wildcard pattern as in the 
> JCasGenPomFriendly. Even better would be, to combine that with the commonly 
> used include/exclude pattern used in many Maven plugins, e.g.
> {noformat}
> <plugin>
>   <groupId>org.apache.uima</groupId>
>   <artifactId>jcasgen-maven-plugin</artifactId>
>   <executions>
>     <execution>
>       <goals>
>       <goal>generate</goal>
>       </goals>
>       <configuration>
>         <typeSystemIncludes>
>           
> <typeSystemInclude>src/main/resources/types/**/*.xml</typeSystemInclude>
>         </typeSystemIncludes>
>         <typeSystemExcludes>
>           
> <typeSystemExclude>src/main/resources/types/**/nojcas/*.xml</typeSystemExclude>
>         </typeSystemExcludes>
>       </configuration>
>     </execution>
>   </executions>
> </plugin>
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to