My(maven)项目依赖于stanford-CoreNLP和stanford-Parser,显然每个依赖项的(词汇化)解析器产生不同的输出,它们不相同。
我的问题是如何确定应该从哪个包加载解析器?解析器类在两个包中都具有相同的名称:
edu.stanford.nlp.parser.lexparser.LexicalizedParser
和maven自动从stanford-coreNLP包加载类,而我希望它从stanford-Parser加载。
如果您能帮助我提出建议,我将不胜感激。
答案 0 :(得分:5)
我会提出一个错误,要求他们将词法解析器移动到一个新的maven工件(或其中几个),这样你就可以区分它们。
如果没有发生,您有两种选择:
第二种方法的细分:
1.1.MythBuster.1
或1.1.no-lexer.1
mvn file:install
在本地仓库中安装修改后的工件mvn deploy:deploy-file
在公司的repo中安装修改过的工件我更喜欢第二种方法,因为它确保构建有一个干净的类路径,人们知道你搞砸了原始文件,而且很明显发生了什么。
答案 1 :(得分:2)
我曾经遇到过这个问题并且可以通过使用虚拟包解决它,具体取决于两个冲突的依赖项(在您的情况下是stanford-CoreNPL和stanford-Parser)并使用Maven shade plugin合并它们。
当着色时,虚拟包中只有一个类,具体取决于<dependency />
标记的顺序。