如何在不将脚本或其类型系统放置在类路径中的情况下从 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)
有两层:
- RutaEngine 需要找到 scripts/resources/descriptors
- UIMA 需要能够解析描述符的导入
Ruta 中的资源查找有两个阶段,它在配置参数指定的绝对路径中搜索它们。如果找不到资源,它会在类路径中搜索它。所以你需要设置配置参数:脚本位于scriptPaths
,描述符位于descriptorPaths
,wordlists位于resourcePaths
。有关详细信息,请参阅 documentation。
描述符中导入的问题可以通过在 UIMA ResourceManager 中设置数据路径或将导入更改为 "location" 而不是 "name" 来解决。数据路径可以用作类路径的替代品。如果指定了 int ruta-maven-plugin,则 Ruta 描述使用按位置导入。
免责声明:我是 UIMA Ruta 的开发者
到现在为止,我已经 运行 通过创建 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)
有两层:
- RutaEngine 需要找到 scripts/resources/descriptors
- UIMA 需要能够解析描述符的导入
Ruta 中的资源查找有两个阶段,它在配置参数指定的绝对路径中搜索它们。如果找不到资源,它会在类路径中搜索它。所以你需要设置配置参数:脚本位于scriptPaths
,描述符位于descriptorPaths
,wordlists位于resourcePaths
。有关详细信息,请参阅 documentation。
描述符中导入的问题可以通过在 UIMA ResourceManager 中设置数据路径或将导入更改为 "location" 而不是 "name" 来解决。数据路径可以用作类路径的替代品。如果指定了 int ruta-maven-plugin,则 Ruta 描述使用按位置导入。
免责声明:我是 UIMA Ruta 的开发者