leiningen可以查看/控制Java pom.xml依赖项的依赖项吗?

时间:2014-06-13 07:27:12

标签: java clojure dependencies leiningen apache-storm

我正在开发一个目前使用org.clojure/tools.cli最新版本的clojure项目,我希望开始使用storm。但是,只要我将[storm "0.9.0.1"]添加到我的依赖项中,使用parse-opts函数的命名空间就无法编译。我的窥探让我得出结论:storm要求较旧版本的tools.cli(0.2.x)以某种隐藏的方式不被leiningen看到/控制。

有趣的是

  • 使用lein deps :tree并未显示此依赖关系,也未显示有关此依赖关系的任何警告;
  • 添加[storm "0.9.1" :exclusions [org.clojure/tools.cli]]似乎无法解决问题。

查看storm github repotools.cli规范似乎位于pom.xml文件中。我已经确认了分支风暴,更新此依赖项并通过lein-git-deps使用此分支修复了该问题。但是,这对此非常令人沮丧。

有解决方法吗?这里有一些错误吗? Leiningen并没有特别好地记录这个功能,至少就我能找到的那样。

1 个答案:

答案 0 :(得分:0)

莱宁根没什么不对的。 Storm的运行时依赖性都在storm-dir/lib/之下,其中包括tools.cli-0.2.4.jar

有一种解决方法,但我不确定它是否有效。

  • 下载新版tools.cli jar并将其放在storm-dir/lib/
  • 将旧版本移至另一个位置。
  • 希望两个版本之间没有太大区别,并启动拓扑。

此解决方案适用于某些库,但不是全部。如果不起作用,任何只改变maven或leiningen依赖的尝试都不会起作用。