如何从 Java 代码下载 Gradle 依赖项?

Posted

技术标签:

【中文标题】如何从 Java 代码下载 Gradle 依赖项?【英文标题】:How to download Gradle dependency from java code? 【发布时间】:2018-06-19 16:08:23 【问题描述】:

我的 Java 应用程序需要按需将工件从 Artifactory 复制到 AWS S3 临时存储桶(应用程序组、名称和版本将在运行时作为参数传递)。最简单的方法是直接从 Artifactory 构建 URL 和下载文件,但应用程序应支持“latest.integration”和“latest.relase”版本。所以我想将 Gradle 二进制文件添加到类路径中并使用它来下载依赖项。

Google 结果中充斥着关于使用 build.gradle 进行依赖管理的问题。

到目前为止,我看到了 https://discuss.gradle.org/t/execute-gradle-task-from-java-code/21859/4,但看起来它也依赖于预先存在的 build.gradle 文件。

所以问题是:有没有办法使用 Java 应用程序中的 Gradle API 来下载某些库而不生成 build.gradle 文件?

【问题讨论】:

您可能会发现像 Ivy (ant.apache.org/ivy) 这样的东西更有用,因为 Gradle 是一个构建框架,并不是真正适合您的使用方式。 我已经有一个可以使用 Ivy 下载工件的代码(有用于遗留构建的旧工件存储库)。所以你的意思是我可以重用它只是改变ivysettings.xml? 您应该能够更改您的配置或使用 Ivy 作为库来做您想做的事情(我确定添加了一些代码)。 您可能对 JFrog 编写和维护的 artifactory-java-client 感兴趣:github.com/JFrogDev/artifactory-client-java @cjstehno 你的建议很好。如果需要,您可以将您的评论转换为答案,以便我将其标记为正确。谢谢。 【参考方案1】:

您应该能够按原样使用 Ivy (http://ant.apache.org/ivy/) 或将其作为库本身来完成您需要的工作,可能还需要一些额外的代码。

(从我的 cmets 创建的答案)

【讨论】:

以上是关于如何从 Java 代码下载 Gradle 依赖项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用“api”或“implementation”指令从gradle插件获取依赖项

查找未使用的gradle运行时依赖项

如何从 android 中的 pom.xml 文件创建 gradle 依赖项?

如何从 Kotlin DSL build.gradle 中的所有依赖项中排除库?

Gradle离线如何缓存依赖项

Android apk - 如何使用 gradle 从 3rd 方依赖项中排除 .so 文件