如何从maven项目运行外部ruta脚本而不将脚本或其类型系统放在类路径中?

时间:2016-06-13 06:54:56

标签: maven uima ruta

直到现在,我一直在通过创建AnalysisEngine和CAS以及处理引擎来运行maven项目中的ruta脚本。为此,我将所有脚本和描述符文件(Engine& TypeSystem)放入maven项目的scr / main / resources文件夹中。

现在我想将脚本和TypeSystem文件放在外部路径中,并将路径动态传递给运行脚本的java代码。有可能吗?如果是这样,怎么样?

我只是将文件(脚本和描述符)放在外部路径中并传递新路径以实例化AnalysisEngine,如下所示;

final AnalysisEngine engine = AnalysisEngineFactory.createEngine("home/admin/Desktop/TEST_ScriptFolder/com/textjuicer/ruta/date/Dazzle_ChapRef_UpdatedEngine");

错误

org.apache.uima.util.InvalidXMLException:无法解析导入。没有名称为" home / admin / Desktop / TEST_ScriptFolder / com / textjuicer / ruta / date / Dazzle_ChapRef_UpdatedEngine.xml"在类路径或数据路径中找到。 (描述符:)     at org.apache.uima.resource.metadata.impl.Import_impl.findAbsoluteUrl(Import_impl.java:117)     at org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription(AnalysisEngineFactory.java:869)     在org.apache.uima.fit.factory.AnalysisEngineFactory.createEngine(AnalysisEngineFactory.java:107)     在com.textjuicer.ruta.date.ArtifactAnnotator.getAllAnnotations(ArtifactAnnotator.java:93)     在APPLICATIONStyle.XmiTransformer.parseXMI(XmiTransformer.java:33)     在APPLICATIONStyle.ApplyStyle.applyStyleOnDocx(ApplyStyle.java:76)

1 个答案:

答案 0 :(得分:1)

有两层:

  1. RutaEngine需要找到脚本/资源/描述符
  2. UIMA需要能够解析描述符导入
  3. Ruta中的资源查找有两个阶段,它在配置参数中指定的绝对路径中搜索它们。如果未找到资源,则会在类路径中搜索它。因此,您需要设置配置参数:脚本位于scriptPaths,描述符位于descriptorPaths,单词列表位于resourcePaths。有关详细信息,请参阅documentation

    描述符中导入的问题可以通过在UIMA ResourceManager中设置数据路径或通过将导入更改为" location"来解决。而不是" name"。数据路径可以用作类路径的替代。如果ruta描述符指定了ruta-maven-plugin,则Ruta描述符使用按位置导入。

    免责声明:我是UIMA Ruta的开发者