質問のタイトルが正しいかどうかわかりませんが、質問を読んでください。
私は仕事のほとんどの期間 (11 年近く) C/C++ に取り組んできました。C/C++ ソース/ヘッダー ファイルのみがあり、すべての依存関係は Makefile によって管理されていました。物事はシンプルで扱いやすいものでした。
過去 1.5 年間、私は Java ドメインに移行しました。そして、何か新しいものを扱う上で最も難しい側面が依存関係マネージャーであることに、私は非常に苛立ちを覚えます。例: maven、leiningen、builder、sbt など。
オープンソースの世界から何か新しいものをダウンロードするときはいつでも、コンパイル、ビルド、実行環境をセットアップするだけでかなりの時間が費やされます。私がEclipseを使用しているときもそうです。ダウンロードするソフトウェアと一緒にすべての依存関係を配置できないのはなぜですか?? maven、leiningen などのツールが、依存関係をダウンロードするために別のインターネット接続を作成する必要がある理由。Mavenはローカルリポジトリを形成し、インターネット全体をダウンロードするため、依存関係をローカルで見つけることができるはずですが、なぜこのモデルが使用されるのですか. ファイアウォールの背後にいて、すべてにアクセスできるわけではなく、ツールが依存関係をダウンロードできません。ほとんどの職場環境で同じ状況があると確信しています。
最近、私は clojure を使い始めましたが、clojure 用に Eclipse を構成するのは大変でした。leiningen は、あらゆる Clojure 開発で使用しなければならない何らかの魔法であると考えられています。時々、clojure の概念を学ぶよりも leiningen を学ぶ方が重要だと感じることがあります。「自己インストール」が機能しなかったため、leiningen のいわゆる「スタンドアロン」jar ファイルをダウンロードしました。しかし、それは私をだましました。「lein」コマンドを実行するとすぐに、インターネット接続が確立され、何かをダウンロードしようとします。なぜ?インターネットに接続せずにヘルプ メニューを印刷することさえありません。なぜ?私が知らないので、インターネットファイアウォールをバイパスせずにその要求を満たす方法はありません。また、この男が何を望んでいるのかを誰も教えてくれません。他に方法はありません。
そして、誰もが独自の発明をしているようです。Java には単純な ant があり、Maven に移行しました。一部のプロジェクトでは Ruby ベースの Builder が使用され、Clojure には leiningen があり、Scala には sbt があります。Goには他にも何かがあります。なぜ?すでに複雑さでいっぱいの世界で、なぜこの複雑さを増す必要があるのか. ツールが 1 つしかないのはなぜですか。
Java テクノロジーの専門家の皆様、私の暴言をお許しください。この質問は、物事を理解するのに十分な努力をしていない人からのように、反対票を投じられて閉じられると確信しています。しかし、私はこの不必要な複雑さと戦うのに十分な時間を費やしてきたと信じてください.
他の人がこれをどのように回避するかを知りたいだけですか、それともこれらの問題に直面しているのは私だけですか.