3

私の grails アプリはshiroQuartz2の 2 つのプラグインで動作するはずです。

BuildConfig.groovyに両方のプラグインを追加します。

  • ":shiro:1.1.4" をコンパイルする
  • コンパイル ":quartz2:2.1.6.2"

(その後、ideがそれらをダウンロードしました)

依存関係の問題: shiro はshiro-quartz:1.2.0に依存し、shiro-quartzorg.opensymphony.quartz 1.6.1に依存しています。

なぜだろうと思いますが、 Quartz2 は Quartz -1.6.1.jarへのメソッド実装を探しています。Quartz2 は実装を見つけることができないため、プロジェクトをビルドできません。Quartz2 は、 Quartz:1.0-RC7 のような「通常の」クォーツ lib でメソッドの実装を検索する必要があると思いますが、彼は検索しません。

では、どうすれば shiro と Quartz2 プラグインの競合を解決できますか?

依存関係の除外について聞いたことがありますが、この提案についてはわかりません。

クォーツ(クォーツ2ではない)を使用したPSでも同じ問題が発生しました

4

1 に答える 1

9

実行dependency-reportして、プラグインがプロジェクトに追加しようとしている依存関係を確認できます。問題は、shiro-quartz が Quartz 1.x に依存し、 Quartz プラグインが Quartz 2.x を使用していることにあるようです。

通常、次のことができます。

compile (":shiro:1.1.4") {
  excludes('org.opensymphony.quartz:quartz')
}

しかし、バグがあり、この推移的な依存関係は除外されません。これを調整するためのオープンチケットがあります。

良いことは、回避策があることです:

compile (":shiro:1.1.4") {
  excludes([name: 'quartz', group: 'org.opensymphony.quartz'])
}

これにより、Grails は Quartz 2.x のみを使用します。

于 2013-05-24T14:21:10.243 に答える