2017-06-08 23 views
1

私たちは、コモンズコレクションをバージョン3からバージョン4に更新しています。グループidをcommons-collections4に変更したので、2つのバージョンのコモンズクラスパスでのコレクションバージョン3とバージョン4。 開発のためには、バージョン4を使用する必要があります。Gradle:外部依存関係の変更

compile ("org.hibernate:hibernate-entitymanager:3.5.6-Final") 

もコンパイル時に利用できるようになり、休止状態-のEntityManagerを通って来るバージョン3、:我々は次のように持っているので、もしバージョン3は、外部依存関係を通って来ます。開発者はそれを使うことができました。

hibernate-entitymanagerを使用しているときに "commons-collections 3はランタイム依存性とみなされるべきです"と言う方法がありますか?

私たちはGradle 3.5を使用しています。

答えて

0

その考えに私をもたらしwebdizzのおかげで、私は次の操作を行って、それを管理しているようです:

configurations.compileClasspath.resolutionStrategy { 
    dependencySubstitution { 
     substitute module('commons-collections:commons-collections') with module("org.apache.commons:commons-collections4:${COMMONS_COLLECTIONS_VERSION}") 
    } 
} 
0

ない適切な方法があることを確認しかし、あなたがcompile設定でcommons4と交換するcommons3のすべてのバージョンを強制場合、さらにruntimeのみ注釈を定義し、これを達成するために存在しますか?

configurations.compile { 
    resolutionStrategy.force 'commons4', 
} 

dependencies { 
    runtime('commons3') 
} 
+0

これは仕事ができます。私はgradleがこのケースのためのより良い方法を提供しないと思う。私は明日それを試してみましょう。ありがとうございました! – Joschi

0

彼らはcom.google.collections:google-collectionscom.google.guava:guavaに置き換えたことのGradle伝えるためにreplacedByを使用します。ここで、hereを参照してください。 Gradleは2つのモジュールを依存関係解決の単一のモジュールと見なし、両方を決して含めません。

dependencies { 
    modules { 
     module("com.google.collections:google-collections") { 
      replacedBy("com.google.guava:guava") 
     } 
    } 
} 
+0

これは私がアーカイブしたいものではありません。私たちはクラスパスに両方を持つ必要があります。 commons-collectionsもパッケージ構造が変更されているため、バージョン3で動作する外部依存関係にはバージョン3が必要です。例えば。バージョン3でMapUtilsがパッケージをインポートしましたバージョン4のorg.apache.commons.collections.MapUtilsはインポートorg.apache.commons.collections4.MapUtilsにあります。したがって、私はそれを置き換えることはできません。 – Joschi