2011-11-01 9 views
7

私はGrails 1.3.7を使用していますが、httpclientのバージョン4.0を自分のクラスパスから削除する方法はありません。私はプラグインが依存している4.1で使われている引数なしのコンストラクタのためにこれを行う必要があります。Grailsのクラスパスからhttpclientのバージョン4.0を取得する方法

grails 'dependency-report'を実行すると、実行時に4.1が使用されるはずです。それは私が物事を.warにパッケージ化すれば、それです。バージョン4.0は何らかの理由でrun-appを使用してもクラスパス上にまだ終わっています。いくつかのgrails内部でコンパイル時に(正しく)使用されていることに注意してください。何とかクラスパス上にまだ終わっています。

- >私は、4.0の.jarから来て、私のクラスパス上に終わると起こってからそれを停止された(実行アプリを経由して実行しているときにどこすべて.jarsを入れている?)という場所を正確に把握することができます

- >内部で4.0の代わりに4.1でコンパイルするようGrailsに指示できますか(この場合はorg.codehaus.groovy.modules.httpビルダーモジュールのhttpビルダーですか?)最高の解決策ではないと考えていますが、私がテストしたいと思うたびにすべてを.warにパッケージングすることは楽しいことではありません。

助けていただければ幸いです。

答えて

7

私はちょうどあなたが除外を追加することで、クラスパスの外にHTTPClient 4.0を得ることができ、あなたのBuildConfig.groovy

dependencies {   
     build 'org.apache.httpcomponents:httpcore:4.1.2' 
     build 'org.apache.httpcomponents:httpclient:4.1.2' 
     runtime 'org.apache.httpcomponents:httpcore:4.1.2' 
     runtime 'org.apache.httpcomponents:httpclient:4.1.2' 
} 

歓声

リー

+0

私は実際に 'build':release:1.0.0.RC3 'を指定したプラグインを' exported = false 'に変更することでこれを解決しましたが、あなたのソリューションを受け入れました。プラグインの依存関係ファイルを変更する必要はありません。ボトムライン、それは 'ビルド'指定子です。それは犯人です。ありがとう – Peter

1

に以下を追加し、同じことを経てBuildConfig.groovyの行。 grails dependency-reportコマンドを使用して、どのプラグインが依存関係として宣言しているかを把握します。

プラグインが含まれていれば、プラグインセクションBuildConfig.groovyで除外できます。例:

plugins { 
    compile ':other-plugin:1.0.0' // other-plugin depends on httpclient 4.1 
    compile(':aws:1.2.12.2') { // aws plugin depends on httpclient:3.1 
     excludes 'httpclient' 
    } 
} 

HTTPClientは4.1で引数なしのコンストラクタに依存しているプラ​​グインは依存関係としてそれを宣言する必要があります。そうでない場合は、プラグインの作成者に問題をオープンする必要があります。これを回避するには、上記のleebuttsの説明のように、依存関係のセクションにhttpclient 4.1を記述します。

関連する問題