我有一个多项目,如下所示:
- A
- settings.gradle
- build.gradle
- B ( includes A )
- build.gradle
在这些文件中,我将默认存储库用于依赖项和插件。我们将Eclipse与一起使用Buildship ,直到现在,解决方案主要是通过
Refresh Gradle Project
完成的。问题:驻留在不同网络中的一些同事和我们的CI服务器也必须对所有依赖项和插件也使用自定义存储库。该虚拟存储库需要身份验证,证书和代理,以补充各种乐趣。
尝试在
build.gradle
中指定两个存储库,但是对它们进行排序无济于事。第一个失败的构建将失败,其中一个将始终失败,具体取决于网络。考虑将变量作为可以从文件中覆盖/读取的第一行,但是由于pluginManagement
必须是settings.gradle
中的第一个元素,并且必须先进行评估,因此该选项似乎也没有用。我需要的是在这些存储库之间轻松切换,但仍以某种方式与Buildship兼容。
我真的没有其他方法,只能创建多个文件集,例如
build.1.gradle
/ settings.1.gradle
,并使用一些脚本或在每次构建之前手动用其内容覆盖标准build.gradle
/ settings.gradle
。可以通过Gradle或以我可能错过的聪明方法来实现吗?
最佳答案
最后,我能够实现真正接近我想要的东西。
gradle中有一个初始化脚本,它可以动态地覆盖整个环境。我尚未使用Eclipse对其进行测试,但是CI可以完美地工作。
我正在使用这个init.gradle
文件(为用户部署在CI服务器上和在GRADLE_USER_HOME中的此内部网络中),以清除build.gradle
中定义的存储库列表,并覆盖pluginMangement
中settings.gradle
部分中的存储库。
相关链接:Gradle Docs,similar issue
关于eclipse - 与Buildship在build.gradle中相互排斥的仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59292740/