Ivy can not resolve the scope of a dependency which is a dependency of a transitive dependency

穿精又带淫゛_ 提交于 2019-12-02 07:01:42

I reviewed the ivy usage of the nutch project and apologies but my conclusion is that it's overly complex for the following reasons:

  • "compile" and "test" targets are issuing separate calls to the resolve task
  • Each plugin is also calling an ivy resolve task
  • Complex logic for maintaining classpaths. Could be simplified using the cachepath task and ivy configurations.
  • Build plugins are not managed by ivy (Sonar, eclipse, rat)

I started to refactor the build, but had to stop when I realised that I didn't understand the relationship between the main nutch artifact and the plugins... (I discovered NUTCH-1515 the hard way... big time-waster The feed plugin has missing dependencies).

I also noticed issue NUTCH-1371 calling for the removal of ivy. This would be a tricky refactoring without significant change to the current codebase. I suspect it would have to be a multi-module build with each plugin listing its own dependencies.

In conclusion, this work does not answer your question, but thought I needed to at least document the result of a few hours analysis :-) In light of NUTCH-1371 I don't know if your project will tolerant major ivy refactoring?

Refactoring ivy

Here follows what I achieved so far:

Benefits:

Impacts the following Nutch issues

  • NUTCH-1881 : This new approach removes resolve-test and resolve-default targets and manages the classpaths using ivy instead of the ${build.lib.dir}
  • NUTCH-1805 : Can easily setup a separate configuration for the job target with it's own dependencies.
  • NUTCH-1755 : I think this one is fixed by assigning a name to the the build.xml (see: diff)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!