Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 为使用ivy的所有内容更改ivy中的默认存储库_Ant_Repository_Artifactory_Ivy - Fatal编程技术网

Ant 为使用ivy的所有内容更改ivy中的默认存储库

Ant 为使用ivy的所有内容更改ivy中的默认存储库,ant,repository,artifactory,ivy,Ant,Repository,Artifactory,Ivy,我有一个环境,其中基本上所有构建的依赖项都需要从我们的artifactory存储库中提取,同时许多第三方库需要从源代码中构建,通常只需进行非常小的自动更改,并存储在存储库中,以便将来用作依赖项。这样做的原因超出了我的控制范围,无法改变。我正在寻找最好的方法,在从github或任何地方获取这些第三方库的源代码后,将它们指向我们的存储库,从任何使用ivy的地方开始,并不是所有的东西都使用ivy,至少maven和gradle也使用,但ivy被大量使用,所以从这里开始 我已经读了很多关于常春藤的选项,这

我有一个环境,其中基本上所有构建的依赖项都需要从我们的artifactory存储库中提取,同时许多第三方库需要从源代码中构建,通常只需进行非常小的自动更改,并存储在存储库中,以便将来用作依赖项。这样做的原因超出了我的控制范围,无法改变。我正在寻找最好的方法,在从github或任何地方获取这些第三方库的源代码后,将它们指向我们的存储库,从任何使用ivy的地方开始,并不是所有的东西都使用ivy,至少maven和gradle也使用,但ivy被大量使用,所以从这里开始

我已经读了很多关于常春藤的选项,这些选项可以更改一个项目和其他站点的默认存储库,但是我想尝试做一个更广泛的解决方案,从长远来看,这可以节省很多时间。我想到的一个选项是修改ivysettings-public.xml文件,使默认的ivy公共存储库实际上是我们的工件。我看到的两个问题是,项目可能在默认公共存储库之前设置了要检查的特定存储库,尽管我不知道这有多普遍。这也可能需要从源头上建造常春藤?这不是一项不可能完成的任务,只是额外的工作,尽管我还是不确定它会不会完成。但我很确定我知道或者可以很容易地找到解决方案所需的方法

另一种可能的选择是让某种类型的模块或中间人连接到ivy并截获存储库请求,将它们重定向到我们的工件。这一次我不确定它是否可能,但它似乎是可能的

我知道在构建调用之前可能会设置一些环境变量或ANT属性,这些变量或属性也可能在与之前相同的链接中工作。这并不是很理想,但仍然比为每个项目更改ivysettings.xml文件要好得多


基本上,这样做的最终目标是,我们可以从github中提取一个使用ivy的项目,在不更改代码的情况下构建它,并让所有依赖项调用查看我们的artifactory存储库。这也适用于使用maven或gradle等的东西,但似乎一刀切的解决方案要么不可能,要么需要更多的工作,但我可能总是错的,所以从常春藤开始。我觉得我的第一个想法是节省时间和可行性的最佳结合,但我知道可能有更好的选择。

您不必为默认存储库而烦恼。我看到你在那页上链接到,对于常春藤的新手来说,术语可能会让人困惑。这些只是一些类型的存储库,但您不需要关心

您只需要在ivysettings.xml中设置一个。在这个链式解析器中,您可以添加任意数量的子解析器,其中一个可以是您的artifactory,另一个可以是一些公共存储库(如maven central),第三个可以是一些用于测试的本地文件系统解析器等。。。无论何时使用ivy,只要告诉它使用这个链式解析器,或者在ivysettings中将其设为默认解析器


当然,在发布ivy模块时,请确保使用其中一个子/子解析器,我猜您会使用它来指向您的工件中的ivy repo。

您是在谈论ivy本身使用的主ivysettings文件,还是每个项目的ivysettings文件?你是对的,我是常春藤的新手,但我读了一些书,认为我了解如何为常春藤项目设置链接解析器,或者如何为特定的存储库使用iBiblio,以及其他选项。但我希望能找到一个选择,让任何常春藤为基础的项目使用我们的人工制品没有修改。如果您谈论的是core ivysettings.xml文件,那么这就回到了我可以在不从源代码构建ivy的情况下修改它吗?没有main或core ivy setting.xml填充。当然,常春藤会使用一些默认设置,它们可能存储在一个随常春藤一起分发的常春藤文件中,或者存储在一个IDE中。您需要做的只是编写一个ivy settings.xml并从ant使用它,例如,如果我以我想要的方式编写一个ivysettings文件,那么我可以强制将其用于ant build call ant包,或者我必须先用我自己的文件替换项目设置文件吗?例如,在lucene文件夹下有顶级-ivy-settings.xml和default-nested-ivy-settings.xml。看起来,如果我只是用我自己的同名文件替换第二个文件,它就可以工作了。但我不能替换第一个,因为它还指向版本信息和存储库信息。从上一个文件继续,因此在本例中,在找到正确的文件后,直接文件替换可以工作,但我不确定这是否始终有效。正在查找要复制的文件
每个ivy项目中的ace都是可以的,不会增加太多的工作,但是如果该文件可能有其他需要的代码,这是一个问题,因为每个拉式项目都需要一个单独创建的ivy文件,这是我希望避免的。好的,所以每个项目都有自己的ivy.xml模块描述符,它必须。但是,ivysettings.xml可以用于所有项目。例如,我有N个java项目,它们都使用相同的设置。我只是创建了一个env变量,在这里我将路径设置为ivysettings.xml,然后在每个build.xml和ivysettings ant任务中使用它。所以,是的,你可以使用或强制你所说的任何要使用的IVYSeeting。在solr示例中,他们有ivysettings用于内部发布,如您需要的内容,以及发布到mvncentral的内容,如TLDR,但您不需要所有这些—下一条注释