2015-01-11 11 views
5

私はクラスパスのJAR 2の前にJAR 1があることを確認する必要があるので、クリティカルなクラスパスの順序問題があります。クラスパス(コンパイルとランタイム)でgradle依存関係(Eclipse IDEの場合)が順序付けられる順序を決定する方法はありますか?

のEclipse IDEでGRADLE_DEPENDENCIESでこれを強制する方法はあります。

アプリケーション(ディストリビューション)のパッケージ化中に同じことが達成される方法についての洞察はありますか?あなたがクラスパスにjarファイルの正確右のセットを持つように

+0

はい、それは依存関係によって行うことができますが、より高い優先度の2つのルールに気づくでしょう:http://stackoverflow.com/a/38743046/715269 – Gangnus

答えて

6

理想的には、プロジェクト内の依存関係を修正する必要があります。 GradleのドキュメントのDependency Managementの章の依存関係を除外する方法を見てください。

eclipseのクラスパスエントリを変更したい場合は、次の方法があります。あなたは以下を使用してのGradleでeclipseタスクによって生成された.classpathファイルをいじくり回すことができ

eclipse.classpath.file { 
    withXml { 
     // This returns a the classpath XML root node (groovy.util.Node) 
     def node = it.asNode() 

     // Do the re-rodering of classpath entries by modifying the node object 
    } 
} 

を使用すると、XMLノードを変更/表示するために使用できる方法についてgroovy.util.Nodeを見てみましょう。

JVMでパッケージ化されたアプリケーション配布を実行するときに実行されるクラスパスの順序付けを制御できない可能性が高いので、アプリケーションが実際に実行されるときに実行時に正方形に戻る必要があります。

したがって、クラスパスの並べ替えに頼るのではなく、クラスパスで不要なjar依存関係のソースを見つけて、それを排除するのが最善の解決策です。

+0

うまく丸められた答えをありがとう。私は、この問題は推移的な依存関係として追加されているjarのバージョンの競合が原因であることに気付きました。私は問題を "除外"機能を使って依存宣言で除外して解決しました。有益な答えにもう一度感謝します。 – acthota

+0

upvoteできません:(私はupvoteに十分な評判はない。 – acthota

関連する問題