1

我在 Gradle 中定义了两个项目,projectA 和 projectB 定义为多项目。

ProjectA 与spring1-beans.jar有依赖关系,同时 ProjectB 与 ProjectA 有依赖关系。

我遇到的问题是 ProjectB 也与spring3-beans有依赖关系,因此我需要排除 Spring1 jar,否则它将使用不正确的 Spring 版本。

ProjectA 的 Gradle conf 文件如下所示:

dependencies {
    compile files('lib/spring-beans.jar')
}

和 ProjectB 的 conf:

dependencies {

    compile project(':projects:projectA') {
        exclude files('lib/spring-beans.jar')
    }
}

不幸的是,这不起作用。Gradle 抛出以下错误:

在项目中找不到参数 [文件集合] 的方法 exclude()

我也尝试过使用具有类似输出的模块:

描述“lib/spring-beans.jar”无效

笔记:

  • 我正在使用 JAR 依赖项,因为项目是从 Ant 迁移的,所以即使我接受建议,我也无法切换到远程存储库。
4

1 回答 1

0

我最近在我的 Android Gradle 构建中看到了类似的问题。这是问题:

java.io.IOException: Invalid argument
Could not normalize path for file 'C:\Users\xxxxxx\AndroidStudioProjects\FightClub\app\libs\*.jar'.

这是 Gradle 文件的一个片段:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])  <----  USE THIS
    compile project(':LibQSM')
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.stripe:stripe-android:+'
    compile 'net.hockeyapp.android:HockeySDK:3.5.0'
    compile 'com.joanzapata.pdfview:android-pdfview:1.0.+@aar'
    compile 'com.google.android.gms:play-services-gcm:7.0.0'
    compile files('libs/*.jar') <---- NOT THIS, PROBLEM HERE!!!!!
}

问题原来是我为依赖项指定路径的方式。指示的问题行包含“/”分隔符,该分隔符在 Windows 上中断,但在 OSX 和 Linux 上运行良好。

确保使用显示的第一种方法... 'compile fileTree(dir: 'xxx', include: ['*.jar'])' 超过第二种。

于 2015-04-30T18:28:47.443 回答