如何在不将脚本或其类型系统放置在类路径中的情况下从 Maven 项目 运行 外部 ruta 脚本?

How to run external ruta scripts from a maven project without placing the script or its typesystem in the classpath?

到现在为止,我已经 运行 通过创建 AnalysisEngine 和 CAS 并处理引擎,从 maven 项目中编写了 ruta 脚本。为此,我将所有脚本和描述符文件(引擎和类型系统)放入 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: 无法解析导入。在 class 路径或数据路径中找不到名称为 "home/admin/Desktop/TEST_ScriptFolder/com/textjuicer/ruta/date/Dazzle_ChapRef_UpdatedEngine.xml" 的文件。 (描述符:) 在 org.apache.uima.resource.metadata.impl.Import_impl.findAbsoluteUrl(Import_impl.java:117) 在 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) 在 ApplyingStyle.XmiTransformer.parseXMI(XmiTransformer.java:33) 在 ApplyingStyle.ApplyStyle.applyStyleOnDocx(ApplyStyle.java:76)

有两层:

  1. RutaEngine 需要找到 scripts/resources/descriptors
  2. UIMA 需要能够解析描述符的导入

Ruta 中的资源查找有两个阶段,它在配置参数指定的绝对路径中搜索它们。如果找不到资源,它会在类路径中搜索它。所以你需要设置配置参数:脚本位于scriptPaths,描述符位于descriptorPaths,wordlists位于resourcePaths。有关详细信息,请参阅 documentation

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

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