我不确定问题的标题是否正确,但请阅读问题。为什么我们需要依赖管理的复杂性
我一直工作在C/C++对我的工作生活中的大部分(近11年)。我们只有C/C++源文件/头文件,并且所有依赖项都由Makefiles管理。事情很简单,易于管理。
过去1.5年我已经转移到Java域。我觉得非常恼火与任何新工作的最困难的方面是依赖经理。例如maven,leiningen,builder,sbt等等等等。当我从开源世界下载任何新东西时,只需要花费大量时间来设置编译,构建和运行环境,就可以使用它。当我使用eclipse时也是如此。为什么不能将所有的依赖关系与要下载的软件一起放置?为什么诸如maven,leiningen等的工具必须单独建立互联网来下载依赖关系。我知道maven构成一个本地存储库,并且应该能够在本地找到依赖关系,因为它总是下载整个互联网,但为什么会使用这个模型。我位于防火墙之后,并非一切都可以访问,并且这些工具无法下载依赖关系。我相信在大多数工作环境中都存在同样的情况。
最近,我开始使用Clojure,和男孩它已经为Clojure的获得日食配置有疼痛感。 Leiningen应该是一些必须用于任何clojure开发的魔法。有时候感觉学习leiningen比学习clojure概念更重要。我为leiningen下载了所谓的“独立”jar文件,因为“自我安装”不适合我。但它骗了我。只要我运行'lein'命令它正在互联网连接,并试图下载一些东西。为什么?它甚至不会打印帮助菜单,而无需连接互联网。为什么?我不能绕过我的互联网防火墙来满足它的要求,因为我不知道,也没有人能告诉我这个家伙想要什么。根本没有别的办法。
而且每个人似乎都在发明自己的。 Java有蚂蚁,这很简单,去了Maven,一些项目使用基于Ruby的Builder,Clojure有leiningen,Scala有。去有别的东西。为什么?为什么我们需要在一个已经充满复杂性的世界中增加复杂性。为什么不能有一个工具。
所有您在Java技术方面的专家,请原谅我的咆哮。我相信这个问题将会由于一些不努力去理解事情的人而被低估和封闭。但请相信我,我已经花了足够的时间与这种不必要的复杂性作斗争。
我只是想知道别人是如何解决这个问题,或者我是唯一一个不幸面临这些问题。
“我确信这个问题将会由于一些不努力去理解这些事情的人而被低估和关闭”。我们回答具体的问题。我相信这是很痛苦的,但是你需要将你的问题形成一些有可能被回答的问题。这,不能。 – Dmitry 2013-03-06 10:05:38
问题是为什么我们需要这种复杂的依赖关系管理,而且我是唯一面临这些问题的人。如果其他人正面临这些问题,这件事可以做些什么。谢谢你的评论。 – weima 2013-03-06 10:13:11
有许多问题可以解决,但太多问题无法解决。例如,如果您尝试在不包含的情况下使用std :: cout <<字符串,则C++会吐出垃圾。再次,这更像是一个哲学问题,复杂性在这里停留。 –
Dmitry
2013-03-06 10:15:21