我有一个环境,其中(基本上)构建的任何东西的所有依赖项都需要从我们的artifactory存储库中提取出来,同时许多第三方库需要从源代码构建(通常需要非常小的自动更改)并存储在存储库中,以便将来用作依赖项。这样做的原因不在我的控制范围之内,并且不是可以改变的。我正在寻找最好的方法来将这些第三方库指向我们的存储库,从github或任何地方提取它们的源代码,从使用ivy的任何东西开始(并不是所有的东西都使用ivy,至少maven和gradle也使用,但ivy经常使用,所以从那里开始)。
我已经阅读了相当多的常春藤选项来更改一个项目(Here和其他站点)的默认存储库,但我想尝试做一个更广泛的解决方案,从长远来看可以节省很多时间。我想到的一个选择是修改ivysettings-public.xml文件,这样默认的常春藤公共存储库实际上就是我们的artifactory。我看到的两个问题是,一个项目可能会在默认的公共存储库之前设置一个特定的存储库进行检查,尽管我不知道这种情况有多常见。此外,这可能需要从源代码构建常春藤?这不是一个不可能完成的任务,只是额外的工作,尽管我再次不确定它会不会,但我很确定我知道(或者可以很容易地弄清楚)如何做这个解决方案所需的事情。
另一种可能的选择是让某种类型的模块或中间人附加到ivy并拦截存储库请求,将它们重定向到我们的artifactory。这个我不确定是否可能,但看起来是可能的。
我知道可能有一些环境变量或ANT属性可以在构建调用之前设置,它们也可能起作用(从与之前相同的链接)。这并不是很理想,但仍然比为每个项目更改ivysettings.xml文件要好得多。
基本上,这样做的最终目标是,我们可以从github中提取一个使用ivy的项目,在不更改代码的情况下构建它,并让所有依赖项调用都查看我们的artifactory存储库。使用maven或gradle等工具也可以做到这一点,但似乎一刀切的解决方案要么是不可能的,要么是比它值得做的工作更多(尽管我可能总是错的),所以从ivy开始。我觉得我的第一个想法是节省时间和可行性的最佳组合,但我知道这可能是一个更好的选择。
发布于 2018-02-01 04:44:35
您不需要为默认存储库而烦恼。我看到在那个页面中,你链接的术语可能会让那些刚接触常春藤的人感到困惑。这些只是一些类型的存储库,但没有什么需要关注的。
您唯一需要做的就是在ivysettings.xml中设置一个chained resolver。在这个链式解析器中,你可以添加任意数量的(子)解析器,其中一个可以是你自己的工厂解析器,另一个是公共存储库(如maven central),第三个是用于测试的本地文件系统解析器,等等。每当你使用ivy时,只需告诉它使用这个链式解析器,或者在ivysettings中将其设为默认解析器。
当然,在发布ivy模块时,请确保使用子/子解析器之一,我猜您会使用它来指向artifactory中的常春藤存储库。
https://stackoverflow.com/questions/48492890
复制相似问题