1

私たちは、Eclipse での Java ビルド プロセスの改善を検討しています。現在、Gradle を使用しています。その取り組みの一環として、可能な限り最適な方法で Gradle を使用しているかどうかを確認しています。Gradle 用の Eclipse プラグインを使用し、コンパイルで依存関係を宣言します。残念ながら、これにより、生成された Eclipse プロジェクトに大量の一時的な依存関係が追加されますが、これは望ましくありません。これらの追加の依存関係は、実行時にのみ有効です。

では、Gradle で依存関係 ONCE を宣言し、そのコンパイル依存関係を依存関係の最初のレベルに設定し、ランタイム依存関係を最初のレベルと一時的な依存関係に設定する方法はありますか?

現在、コンパイルで @jar 構文を使用すると、コンパイルの最初のレベルの依存関係が得られますが、実行時にその依存関係を再度宣言する必要があります。依存関係を更新するために 2 つの場所に行く必要があるため、理想的ではありません。

より良い方法はありますか?

4

2 に答える 2

2

推移的な依存関係を意味していると思います。

Gradle のコンパイル クラス パスに直接の依存関係のみを表示する場合は、現在のソリューションが合理的です。(将来的には、より正確なコンパイル クラス パスをすぐに使用できるようにしたいと考えています。) 潜在的な改善点は、compile(を使用するのではなく@jar) 構成を非推移的にすること、またはカスタムの依存関係構文を提供するプラグインを作成することです。これにより、コンパイルと実行時の依存関係の重複が解消されます。

ただし、これは Eclipse では役に立ちません。Eclipse には別個のコンパイルおよびランタイム クラス パスの概念がないためです。唯一の解決策は、ランタイム クラス パスを提供する責任を実行構成に持たせることですが、これはセットアップが難しい場合があります (たとえば、実行構成はしばしばオンザフライで作成されます)。これに対するボックスのサポート。Gradle の Eclipse プラグインの汎用 XML フックを使用して実行構成を生成することもできますが、Eclipse Gradle 統合がそれらを取得するかどうかはわかりません。

これらの問題により、ほとんどの Eclipse 開発者は、(Gradle を使用しているかどうかに関係なく) すべての実行時依存関係を Eclipse プロジェクトのクラス パスに置きますが、明らかな欠点があります。

私たちのビジョンは、いつか Gradle が Eclipse のビルド エンジンとして機能できるようになることです。これが実現すると、IDE とビルド ツール (クラス パス、コード生成、統合テストなど) の間の不一致は過去のものになります。現在、Gradle はすでに NetBeans のビルド エンジンとして機能し、まもなく IntelliJ IDEA (Android Studio の要件による) のビルド エンジンとしても機能します。

于 2013-08-01T11:38:38.950 に答える