使用Gradle从私有Amazon S3存储库下载依赖项

THX*_*138 8 groovy amazon-s3 dependency-management gradle build.gradle

我希望为现有的java项目添加Groovy支持,这样我就可以使用invokedynamic无缝地编译混合的Java和Groovy代码,这样我就可以获得类似Java的执行速度,而不需要浪费过多的时间和冗长的Java语法

在看到gmaven插件不再支持编译 - 并且groovy eclipse编译器插件还不支持invokedynamic之后,我问自己,如果它编译不必要的慢速Groovy代码,为什么还要继续使用Maven?

因此,我决定尝试为Gradle删除maven,这样我就可以获得更快的代码,同时还将一些python部署脚本移植到Gradle任务,以便只需要一个代码库.

我有一些库存储在一个简单的密码保护的s3 maven存储库中(为了避免需要企业过度杀戮像artifactory).在做了一些基础研究之后,我发现Gradle没有内置支持添加自定义依赖关系管理,是由这个堆栈overlow问题这个支持论坛帖子确定的.

我确实设法找到了一个用于gradles3插件 - 但它没有处理依赖项的管理.

如果Gradle的整个要点比Maven更灵活,并且如果依赖管理/构建系统的核心目的是有效地管理来自各种源的依赖关系 - 那么缺乏对自定义存储库的支持似乎是一个相当重要的意义设计上的缺陷使我在Maven中遇到的任何问题都相形见绌.

但是,我很可能错过了一些东西,而且我已经投入了几个小时学习Gradle-我想我会看到是否有一些合理的方法来模拟这些s3依赖项的依赖关系管理,直到Gradle开发人员解决这个关键问题.否则,我将不得不得出这样的结论,我最好只使用Maven,直到编译器插件支持invokedynamic忍受较慢的Groovy代码.

基本上我需要一个解决方案,执行以下操作:

  1. 将依赖关系和传递依赖关系下载到gradle缓存
  2. 不要求我硬编码到gradle缓存的路径 - 因为我的构建脚本是独立于平台的.
  3. 如果它们已经在缓存中,则不再次下载依赖项.
  4. 适用于多模块项目.

但是,我在文档中找不到任何可以给我一个线索的地方:

Pet*_*ser 0

您不需要任何自定义存储库支持即可完成此工作。maven只需使用正确的 URL声明存储库即可。如果存储库在 Maven 中使用时可以工作,那么它也可以在 Gradle 中使用。(上传可能是另一回事。)