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

我也遇到过类似的问题……让我发疯。有几个 jira 问题可以解决 grails 中的依赖问题,希望它们能在 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 回答