我有一个项目,我需要在其中解析一些 HTML 文件作为 Play 应用程序的一部分。对于这项任务,我想我会应用 nekohtml。我将 nekohtml 指定为 dependencies.yml 和 isse 'play dependencies' 中的一个 dep。这会将 nekohtml 和 xerces 拉入 lib 文件夹。一切都很好。但是,nekohtml 需要在类路径上的 xerces 之前才能正常工作。据我所知 https://github.com/playframework/play/blob/master/framework/pym/play/application.py#L124根据 http://docs.python.org/library/os.html#os.listdir,类路径上 jar 的顺序是任意的是否可以以某种方式手动设置类路径上 jar 的顺序?
编辑:我的 dependencies.yml 如下所示:
require:
- play
- org.apache.poi -> poi 3.7
- net.sourceforge.nekohtml -> nekohtml 1.9.14:
transitive: false
- xerces -> xercesImpl 2.9.1
当我发出“Play 类路径”命令时,它会列出以下内容(摘录):
['/home/leif/dev/java/fun/tk/conf', '/home/leif/dev/play/play-1.2/framework/play-1.2.jar', '/home/leif/dev/java/fun/tk/lib/jaxen-1.1.jar', '/home/leif/dev/java/fun/tk/lib/log4j-1.2.15.jar', '/home/leif/dev/java/fun/tk/lib/junit-4.8.1.jar', '/home/leif/dev/java/fun/tk/lib/jta-1.1.jar', '/home/leif/dev/java/fun/tk/lib/dom4j-1.6.1.jar', '/home/leif/dev/java/fun/tk/lib/xercesImpl-2.9.1.jar', '/home/leif/dev/java/fun/tk/lib/commons-collections-3.2.1.jar', '/home/leif/dev/java/fun/tk/lib/xml-resolver-1.2.jar', '/home/leif/dev/java/fun/tk/lib/xml-apis-1.3.04.jar', '/home/leif/dev/java/fun/tk/lib/antlr-2.7.6.jar', '/home/leif/dev/java/fun/tk/lib/poi-3.7.jar', '/home/leif/dev/java/fun/tk/lib/commons-logging-1.1.1.jar', '/home/leif/dev/java/fun/tk/lib/nekohtml-1.9.14.jar', '/home/leif/dev/play/play-1.2/framework/lib/jj-textile.jar', ...
所以 xerces 明显领先于 nekohtml,即使在 nekohtml 之后手动添加了可传递的 dep。
最佳答案
为什么不从 nekohtml 依赖项中排除 xerces,然后按照您需要的顺序手动添加它作为单独的依赖项?
关于classpath - 在 Play Framework 应用程序中设置类路径顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6512417/