【发布时间】:2020-05-16 06:56:26
【问题描述】:
我需要将一些已编译的 JAVA 类分发给另一个开发团队。所以我可以 JAR 编译的类。
不过,我的 Java 类也依赖于库 A、B 和 C。
最专业的方法是什么?
- 如何在 gradle 项目中包含位于文件系统某处的自定义 JAR 文件?
以及如何与其他开发团队沟通依赖关系:
- “编译”所有依赖项到我的 JAR 中。但是,这可能会导致(版本)冲突。
- 为普通 JAR 提供我自己的 JAR 文件,并提供一个 Gradle sn-p 及其应包含在 Gradle 项目中的依赖项(或 ANT/Maven 或只是他们使用的)。
有没有办法:
- 编写一个 Gradle 文件,将 JAR 拉入本地文件系统,以及所有依赖项,例如通过在 gradle 文件中描述它们?
- 在编译的 JAR 文件(“自我描述”JAR 文件)中包含一个 Gradle/Manifest 文件,Gradle 会自动读取该文件并自动获取所有依赖项?
处理这个问题的最佳方法是什么?
【问题讨论】:
-
真正最好的方法是为开发人员提供源代码,以便他们自己构建! (也是最专业的,IMO)
-
“编译”所有依赖项到我的 JAR 中。这是最好的方法之一。其他开发人员不必担心其他库的版本。即使这些库有任何新版本,您自己的类文件也知道要依赖哪个版本。
-
或者更好的是,设置一个源代码存储库和一个工件存储库存储库来保存 JAR 文件等。并让其他团队访问该存储库。
-
@Sara - 这是向非开发人员客户交付代码的好方法。但是开发人员需要知道依赖是什么,并且(通常)有能力修补它们。并且能够访问源代码将使他们更容易调试代码并发现/报告代码中的错误!
-
我建议遵循 Oracle 在分发时遵循的方式。实际类及其依赖项的单独 jar 和源文件的另一个 jar。