引用静态库目录gradle时,在构建过程中出现问题



我使用构建。Gradle文件,它需要引用一些jar文件,这些文件既不在公共存储库中也不在内部存储库中。

因此,我将jar文件放在Eclipse项目下面的lib目录中:

dependencies {
    ...
    compile files('lib/*.jar')
}

只要在Eclipse中运行或导出程序,就可以正常工作。但是当我尝试gradle build gradle失败时,出现以下错误:

无法规范化文件路径"C: 项目工作区 MyProject lib * . jar的。

我将路径更改为lib*.jar,添加了一个领先的./,删除了*.jar,但无济于事。

当我从依赖项中删除compile files行并将其添加到存储库中时

repositories {
    ...
    flatDir { dirs './lib' }
}

编译器抱怨error: cannot find symbol,所有这些符号都在lib目录中引用的jar中。当我运行gradle --debug时,我可以从日志中看到flatDir引用的目录正在以下目录中搜索:

10:02:20.587 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ResourceVersionLister] using org.gradle.internal.resource.transport.file.FileResourceConnector@48499739 to list all in /C:/...../lib/ 
10:02:20.592 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ResourceVersionLister] found 7 urls

7是lib目录下的文件数。

为什么这个工作在Eclipse (STS 3.7与gradle工具),而不是从命令行?我尝试了gradle 2.2.1和2.5.

您需要使用FileTree而不是FileCollection:

compile fileTree(dir:'lib', include:'*.jar')

eclipse和gradle表现不同的原因很可能是因为你没有运行gradle eclipse(一个由eclipse插件添加的任务)。Eclipse不与您的构建交互。一点也不自然。

eclipse任务更新您的eclipse,使其与gradle同步。

我很难找到这个问题,所以我将保留我自己的问题,并写下解决问题的方法。

很明显,有一些不同的行为使得命令行gradle在组合路径和通配符时升级。

这是正确的语法,适用于Eclipse和gradle命令行:

dependencies {
    compile fileTree(dir: 'lib', include: ['*.jar'])
}

我从stackoverflow上的另一篇文章中找到了这篇文章,这篇文章是我在最初的研究中没有找到的。

相关内容

  • 没有找到相关文章

最新更新