【发布时间】:2016-06-20 04:52:36
【问题描述】:
我在阅读 Gradle 文档时肯定会遗漏一些东西,因为这感觉像是一个常见的用例。基本上,我有两个项目——MyApp 和 MyLib。 MyApp 将使用 MyLib.jar 作为依赖项。反过来,MyLib 也有自己的依赖 jars - 在构建时,MyLib 的 build.gradle 会指定这些。最后,MyLib.jar 将只包含非依赖的 .class 文件,因此 MyApp 不知何故需要在编译时下载 MyLib.jar 的依赖项。
如何告诉 MyApp 的 build.gradle 包含 MyLib.jar,然后下载 MyLib 的依赖 jar,而不在 MyApp 的 build.gradle 中指定这些 jar?我觉得 MyApp 的 build.gradle 不应该知道传递依赖。我知道通常, build.gradle 会查看远程 Maven/Ivy 存储库并读取相应的 xml 以下载适当的传递依赖项,但我不想将 MyLib 上传到 Maven/Ivy 存储库。理想情况下,我想将 MyLib.jar 与一些描述符文件一起分发 - 例如pom.xml - 列出传递依赖项,但不一定打包为“存储库”。请参阅下图以了解我所指的内容:
请注意,我计划分发 MyLib.jar,而不是作为一组源,而是作为一个封闭的 jar,所以我不想设置多项目 Gradle 构建。此外,MyLib 的依赖项可以在 MavenCentral/etc 存储库中找到,也可以作为文件系统中 MyLib.jar 旁边的 jars 找到。
【问题讨论】:
-
你为什么反对多项目设置?
-
@RaGe:实际上,我可以接受,但第二个项目将只包含一个 jar - MyLib.jar。它不包含任何源文件。为像 MyLib.jar 这样的每个一级依赖创建一个完整的项目感觉很尴尬
-
多项目是一种方式,另一种方式是发布到本地 Ivy/Maven 存储库,因此您将获得一个声明依赖关系的 ivy.xml/pom.xml。
-
你的最后一行听起来你可以将 myLib+所有依赖项的文件夹作为 jars 分发。您可以将 myApp 中的 jar 目录用作
compile files('/path/to/jars') -
为什么你不想使用 maven repo 分发?
标签: java maven gradle jar build.gradle