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

如何从maven项目运行外部ruta脚本,而不将脚本或其typesystem放在类路径中?,maven,uima,ruta,Maven,Uima,Ruta,到目前为止,我一直在从一个maven项目运行ruta脚本,创建AnalysisEngine和CAS,并处理引擎。为此,我将所有脚本和描述符文件(Engine和TypeSystem)放入maven项目的scr/main/resources文件夹中 现在,我想将脚本和TypeSystem文件放在一个外部路径中,并将该路径动态地传递给运行脚本的java代码。有可能吗?如果是,怎么做 我只是将文件(脚本和描述符)放在一个外部路径中,并传递新路径来实例化AnalysisEngine,如下所示 final

到目前为止,我一直在从一个maven项目运行ruta脚本,创建AnalysisEngine和CAS,并处理引擎。为此,我将所有脚本和描述符文件(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/textJuice/ruta/date/Dazzle_ChapRef_UpdatedEngine.xml”的文件。(描述符:) 位于org.apache.uima.resource.metadata.impl.impl\u impl.findAbsoluteUrl(Import\u impl.java:117) 位于org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription(AnalysisEngineFactory.java:869) 位于org.apache.uima.fit.factory.AnalysisEngineFactory.createEngine(AnalysisEngineFactory.java:107) 位于com.textJuice.ruta.date.ArtifactAnnotator.getAllAnnotations(ArtifactAnnotator.java:93) 在ApplyingStyle.XmiTransformer.parseXMI(XmiTransformer.java:33) 在ApplyingStyle.ApplyStyle.applyStyleOnDocx(ApplyStyle.java:76)

中有两个层:

  • RutaEngine需要找到脚本/资源/描述符
  • UIMA需要能够解析描述符的导入
  • Ruta中的资源查找有两个阶段,它在配置参数中指定的绝对路径中搜索它们。如果找不到资源,它会在类路径中搜索它。因此,您需要设置配置参数:脚本位于
    scriptpath
    中,描述符位于
    descriptorPaths
    中,单词列表位于
    resourcepath
    中。有关更多信息,请参阅

    描述符中导入的问题可以通过在UIMA ResourceManager中设置数据路径或将导入更改为“位置”而不是“名称”来解决。数据路径可以用作类路径的替换。如果Ruta描述符在Ruta maven插件中指定了位置导入,那么它将使用位置导入


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

    谢谢!是否可以在引擎文件中设置变量(路径)而不是硬编码路径?因为我想动态获取路径(java)并将其传递给引擎文件。有没有一种直接的方法?或者。。。是否可以从引擎文件中获取当前路径,并将其设置为脚本路径、资源路径和描述符路径?始终可以通过编程方式重新配置分析引擎(更改参数值)。如果分析引擎描述基于xml描述符,那么它还存储其原始url。请让我知道如何通过编程实现。我在这里提出了一个新问题: