Java 如何使nutch插件依赖JAR在运行时可用
我正在编写一个名为entity extractor的nutch 1.7插件,它取决于库 Nutch使用Ivy管理依赖项,因此在我的插件源文件夹中,我有以下Ivy.xml:Java 如何使nutch插件依赖JAR在运行时可用,java,plugins,ant,ivy,nutch,Java,Plugins,Ant,Ivy,Nutch,我正在编写一个名为entity extractor的nutch 1.7插件,它取决于库 Nutch使用Ivy管理依赖项,因此在我的插件源文件夹中,我有以下Ivy.xml: <!-- ./src/plugins/entity-extractor.ivy.xml --> <ivy-module version="1.0" xmlns:maven="http://ant.apache.org/ivy/maven"> ... <dependencies>
<!-- ./src/plugins/entity-extractor.ivy.xml -->
<ivy-module version="1.0" xmlns:maven="http://ant.apache.org/ivy/maven">
...
<dependencies>
<dependency org="edu.stanford.nlp" name="stanford-corenlp" rev="3.4.1">
<artifact name="stanford-corenlp" />
<artifact name="stanford-corenlp" maven:classifier="models"/>
</dependency>
</dependencies>
</ivy-module>
当模型jar在我的类路径中时,我可以访问以下文件:
InputStream modelStream = ClassLoader.getSystemClassLoader().getSystemResourceAsStream(modelPath);
我的问题是,只有将以下内容放入(nutch-source-home-dir)/ivy/ivy.xml中,这种方法才有效
<!-- ./ivy/ivy.xml -->
<dependency org="edu.stanford.nlp" name="stanford-corenlp" rev="3.4.1">
<artifact name="stanford-corenlp" />
<artifact name="stanford-corenlp" maven:classifier="models"/>
</dependency>
通过检查,当我在/ivy/ivy.xml
中指定依赖项时,我想要的JAR是可用的,而当我没有指定依赖项时,JAR是不可用的。我怎样才能告诉nutch在运行时让我的JAR可用,而不干扰/ivy/ivy.xml
InputStream modelStream = ClassLoader.getSystemClassLoader().getSystemResourceAsStream(modelPath);
<!-- ./ivy/ivy.xml -->
<dependency org="edu.stanford.nlp" name="stanford-corenlp" rev="3.4.1">
<artifact name="stanford-corenlp" />
<artifact name="stanford-corenlp" maven:classifier="models"/>
</dependency>
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL myurl: urls){
System.out.println(myurl.getFile());
}