-1

最近、スタック オーバーフローに質問を投稿し、 Eclipseで依存関係を持つJARファイルを作成する方法についての説明を探しました。

私が質問をしたとき、私の質問の言い方がまずかったことがすぐに明らかになり、回答者を混乱させていました。そのため、Eclipse でこれを行う方法について質問を投稿したところ、すぐに「Mavenに切り替えてください。ビルド ツールの作業を IDE に頼らないでください」という回答が得られました。これは、特に、自分のプロジェクトの JAR ファイルを生成するために既にAntを使用していると述べたことを考えると、私にとっては役立つというよりも、少し言い逃れのように思えました。理由を尋ねたところ、「あなたのコードは、それが書かれた IDE とは独立してビルドできるはずだから」という返事が返ってきました。

まず最初に、どのようにして JAR ファイルを作成し、その依存関係を JAR ファイルに含めるか、またはライブラリ フォルダーに配置してコードを IDE に依存させることができるのでしょうか?

dist ディレクトリの有無にかかわらず、私のコードには、典型的な Java ソース ディレクトリ構造を持つsrcディレクトリがまだ含まれています。これは非 sequitur のようです。クラス ライブラリで作業し、いくつかの小さな変更を行い、テストのために開発マシンにデプロイする必要がある場合、IDE で簡単にすべての依存関係を含む JAR ファイルを簡単にビルドしてデプロイできると思います。それはどこか。

その能力を持つことは、設計ステップではなく構築ステップです。ソース コード ディレクトリの構造や、コードに関するものはまったく変更されません。部分クラスや、私が使用している IDE 専用に設計された他の卑劣な Visual Studio タイプのものは作成されません。有効なマニフェストとその依存関係を含む JAR ファイルを要求しているだけです。IDEに求めることは本当にそんなに多いのでしょうか、それとも私はこれが間違っていますか?

また、ある IDE から別の IDE に変更するには、何らかの変換作業が必要になるように思えます。私が Java で書いたコードについては、特定のアセンブリがどこにあるかを明示的に述べているものはありません。また、インストール中にディスク上の場所が環境変数に追加される API ではないと仮定すると、これらの参照を常に手動で解決する必要があります。

私が間違っている場合は修正してください。ただし、Javaコンパイラはソースコードのディレクトリ構造を強制しません(正しくない場合はNoClassDefタイプの例外をスローします)。したがって、IDE(少なくともJavaの場合)はその要件に基づいて構築されています?

また、IDE の変更はまれなイベントだと感じています。人々は自分のツールに慣れ、まったく新しい IDE を同じプロジェクトで同じ言語で使い始めることを無作為に決定することはありません。他の状況では、人に変化を迫る必要があります (新しいテクノロジーなど)。

また、多くの開発者が同じ場所で同じ言語で作業し、複数の IDE を使用する可能性はほとんどないと思います。私が開発チーム全体で働いたすべての場所で、開発チームが同じ種類のプロジェクトに取り組んでいる同じツール セットを使用しています。Android 開発者は Eclipse を使用しており、ASP.NET開発者は Visual Studio を使用しています。それが起こることは理解していますが、私の経験では、IDE の変更は通常、最近リリースされた同じ IDE の新しいバージョンに変換することを意味し、通常はそれが行われます。ある種の下位互換性、または変換ウィザードを備えています。

私は面白おかしく言おうとしているわけでも、私の以前の記事に関わった人々を攻撃しようとしているわけでもありません。彼らの回答に寄せられた賛成票の数を考えると、コミュニティのほとんどが同意しているように見えます。羊にならないために、理解を助けてください.

4

1 に答える 1

3

通常、IDE の外部から自動ビルド ツールを使用して jar をビルドする方法が必要です。これは、反復可能な自動化されたプロセスを実現するためです。Eclipse から jar をビルドし、ソース コードと lib ディレクトリを含めることによってそれを行うとします。その後、他の誰かがそれをビルドしに行き、lib ディレクトリを含めるのを忘れました。ビルドが複雑になるにつれて、問題を追跡するのが難しくなる可能性があります。

たとえば、ビルド サーバーでコードを実行している場合、ide がないため、自動的にビルドする方法が必要です。もちろん、独自のスクリプトをロールすることもできますが、これをはるかに簡単にするための専用ツールがあります。つまり、gradle、maven、ant (とにかく Java の世界では) です。

IDE 内からそのビルド スクリプトをいつでも使用できますが、IDE なしでビルドする方法が必要であり、すべてのビルドが一貫している必要があります。

Maven のようなこれらのツールは、ビルドだけでなく、依存関係の管理にも役立ちます。リポジトリ マネージャーを使用してプロジェクトに必要なアーティファクトを保存するため、lib フォルダーを用意して依存関係を手動で管理することについて心配する必要はありません。欲しいものを言うだけで、ビルド ツールがそれを取得する方法を見つけ出します。

すばやく構築できることも重要です。ビルド スクリプトを実行すると、手動でパッケージ化するよりもはるかに高速です。

うまくいけば、他の人がビルド ツールの使用を推奨する理由について、ある程度の洞察が得られたはずです。それは良い考えであり、深刻なプロジェクトには本当に必要です。

于 2013-04-11T18:59:23.033 に答える