【发布时间】:2026-01-30 22:30:01
【问题描述】:
我希望将 Groovy 支持添加到现有的 java 项目中,以便我可以使用 invokedynamic 无缝编译混合的 Java 和 Groovy 代码,从而获得Java-like execution speed without needing to waste excessive amounts of time with verbose Java syntax
在读到 gmaven 插件不再支持编译 - 以及 groovy eclipse 编译器插件doesn't yet support invokedynamic 之后,我问自己,如果 Maven 编译了不必要的慢的 Groovy 代码,我为什么还要继续使用?
因此,我决定尝试为 Gradle 废弃 maven,以便获得更快的代码,同时将一些 python 部署脚本移植到 Gradle 任务中,以便只需要一个代码库。
我有一些库存储在一个简单的受密码保护的 s3 maven 存储库中(为了避免像工件一样需要企业过度杀伤力)。在做了一些基础研究之后,我发现 Gradle 没有内置支持添加由 this stack overlow question 和 this support forums post 确定的自定义依赖管理。
我确实设法找到了s3 plugin for gradle - 但它不处理依赖项管理。
如果 Gradle 的全部意义在于比 Maven 更灵活,并且如果依赖管理/构建系统的核心目的是有效地管理来自各种来源的依赖 - 那么缺乏对自定义存储库的支持似乎是一个相当重大的设计缺陷使我迄今为止在 Maven 中遇到的任何问题都相形见绌。
但是,我很可能遗漏了一些东西,而且我已经投入了几个小时来学习 Gradle - 所以我想我会看看是否有一些合理的方法来模拟这些 s3 依赖项的依赖管理,直到 Gradle 开发人员解决这个问题关键问题。否则我将不得不得出结论,在编译器插件支持 invokedynamic 之前,我最好只使用 Maven 并容忍较慢的 Groovy 代码。
基本上我需要一个执行以下操作的解决方案:
- 将依赖项和传递依赖项下载到 gradle 缓存
- 不需要我硬编码 gradle 缓存的路径 - 这样我的构建脚本就独立于平台了。
- 如果依赖项已经在缓存中,则不会再次下载它们。
- 适用于多模块项目。
但是,我在文档中找不到任何可以让我知道从哪里开始的线索:
【问题讨论】:
标签: groovy amazon-s3 gradle dependency-management build.gradle