Gradle:使第三方jar可用于本地gradle存储库

MH.*_*MH. 44 install maven-2 jar repository gradle

目前,我正在测试Gradle作为Maven的替代品.在我的项目中,有一些第三方罐子,在任何(Maven)存储库中都不可用.我现在的问题是,如何管理它以将这些jar安装到我的本地.gradle存储库中.(如果可能,我不想使用本地Maven存储库,因为Gradle应该独立运行.)目前,由于缺少jar,我得到了很多例外.在Maven中,运行install命令非常简单.但是,我在Google上搜索类似于Maven安装命令的内容并不成功.有人有想法吗?

tol*_*ius 38

您可以将文件系统JAR依赖项包括在:

dependencies {
    runtime files('libs/a.jar', 'libs/b.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
}
Run Code Online (Sandbox Code Playgroud)

你可以改变compile/testCompile/etc的运行时间.

  • 如果第 3 方项目对另一个库有自己的依赖项怎么办? (2认同)

Ian*_*kan 10

一个更全面的答案在邮件列表上给予亚当默多克http://gradle.1045684.n5.nabble.com/Gradle-Make-a-3rd-party-jar-available-to-local-gradle-repository- td1431953.html

截至2010年4月,没有简单的方法可以将新的jar文件添加到〜/ .gradle存储库中.目前正在研究这是否已经改变.

2014年10月,这仍是如此 - 因为gradle这个做你的jar文件的MD5校验,你不能简单地下载它,并把它变成下.gradle /缓存目录,和gradle这个没有,只要我可以告诉你,有任何任务可以让你拿一个本地文件并将该文件推送到它的缓存.


oae*_*oae 8

使用Adam Murdoch帖子中的选项(1)(上面已经链接:http://gradle.1045684.n5.nabble.com/Gradle-Make-a-3rd-party-jar-available-to-local-gradle-repository -td1431953.html)使用gradle-1.3,它工作得很好!

在这里他的评论:

  1. 将jar复制到本地目录并使用flatDir()存储库来使用它们.例如,您可以将它们复制到$ projectDir/lib并在构建文件中执行:

存储库{flatDir(dirs:'lib')}

lib目录中的文件必须遵循命名方案:name-version-classifier.extension,其中version和classifier是可选的.所以,例如你可以称它们为groovy-1.7.0.jar甚至是groovy.jar

然后,您只需将依赖项声明为正常:

依赖{compile'groovy:groovy:1.7.0'}

有一个更详细的flatDir()存储库:http://gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#sec:flat_dir_resolver

  1. 与上面类似,但使用常春藤解析器而不是flatDir().这与上面几乎相同,但就命名和位置而言,它允许更多选项.

有一些细节:http://gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#sub : more_about_ivy_resolvers

  1. 不要在声明依赖项时烦恼.只需将jar复制到某个地方的本地目录并添加文件依赖项.例如,如果jar在$ projectDir/lib中:

dependencies {compile fileTree('lib')//这包括编译类路径中'lib'下的所有文件}

更多详情请访问:http: //gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#N12EAD

  1. 使用maven install将依赖项安装到本地maven缓存中,并使用maven缓存作为存储库:

存储库{mavenRepo(urls:new File(System.properties ['user.home'],'.m2/repository').toURI().toURL())}


sal*_*sal 3

也许我在阅读你的问题时遗漏了一些东西,假设你的 gradle 存储库是 flatDir 类型,你应该能够以 myjar-1.0.jar 的形式复制文件并将它们解析为版本 1.0 的 myjar 。

不知道为什么 Gradle 需要运行 Maven 才能访问本地 Maven 存储库。您只需定义 Maven 存储库即可,它应该可以解决依赖关系。gradle upload如果需要,您可以使用将 jar 推送到本地或远程 Maven 存储库。在这种情况下,它将执行maven。