2

Grails 2.0.3 を使用しています。ではBuildConfig.groovy、以下の除外があります。

dependencies {
    runtime ('com.mycompany.apps.notification:client:1.2.1') {
        excludes([ group: 'xom', name: 'xom' ])
    }
}

私の依存関係ツリーは以下のようになります。 (maven2 を使用してツリーを作成)

[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] com.mycompany.apps.notification:notifytest:jar:0.0.1-SNAPSHOT
[INFO] \- com.mycompany.apps.notification:client:jar:1.2.1:compile
[INFO]    \- com.mycompany.apps.notification:api:jar:1.2.1:compile
[INFO]       \- com.mycompany.framework:platformservice.shared:jar:3.22.0:compile
[INFO]          \- com.mycompany.framework:saml.res:jar:1.0.0:compile
[INFO]             \- xom:xom:jar:1.1:compile
[INFO]                +- xerces:xmlParserAPIs:jar:2.6.2:compile
[INFO]                \- jaxen:jaxen:jar:1.1-beta-8:compile
[INFO]                   \- (xerces:xmlParserAPIs:jar:2.6.2:compile - omitted for duplicate)
[INFO] ------------------------------------------------------------------------

除外はツリーのレベル 4 まで正常に機能していますが、除外はレベル以下で無視されます。私の例では、除外は「com.mycompany.framework:platformservice.shared」まで機能しますが、「com.mycompany.framework:saml.res」以下では機能しません。

私はmaven 2.2を使用して同じことを試しましたが、上記のツリーのすべてのレベルで除外が機能します。より深いレベルで動作するように除外するために、grails にいくつかの構成がありませんか? それとも既知の問題ですか?

4

1 に答える 1

-1

私はこのような同様の問題を抱えていました...私はおかしくなりました。grails の依存関係の問題を修正するための jira の問題がいくつかあり、2.3 で解決されることを願っています。とにかく、あなたの問題に対処するために、私は通常、より高い依存関係を除外し、それを直接含めてから、実際に除外しようとしている項目を除外します。面倒ですが、うまくいきます。

だから多分このようなものですか?

runtime ('com.mycompany.apps.notification:client:1.2.1') {
    excludes([ group: 'com.mycompany.framework', name: 'saml' ])
}


runtime ('com.mycompany.framework:saml.res:1.0.0') {
    excludes([ group: 'xom', name: 'xom' ])
}

また、一般的に依存関係がうまくいかない場合があり、grails --refresh-dependencies compile でうまくいくことがわかります。または、さらに悪いことに、.grails ディレクトリ全体を削除します。

于 2013-05-03T18:12:24.900 に答える