问题 常春藤通过Nexus代理


有谁知道如何在常春藤中指定像Maven中的mirror / mirrorOf?我正在使用本地Maven代理(Nexus)并且需要该工具来指定Nexus代理应该访问哪些父存储库。

在Maven我做的很简单:

<mirrors>
  <mirror>
    <id>central-mirror</id>
    <mirrorOf>central</mirrorOf>
    <url>http://localhost:8081/content/repositories/central</url>
  </mirror>
</mirrors>

但我在常春藤找不到这种选择。


6744
2018-06-23 16:58


起源



答案:


我不认为这种选择直接存在。你可以尝试实现一个 ,并将您的Nexus存储库置于该链中的核心位置。如果我理解链是如何正常工作的(这是一个很大的问题),Ivy会在中心之前检查你的存储库,所以只要你的存储库有相关内容就不需要。

教程 详情。


6
2017-07-08 16:26



谢谢 - 这就是我一直害怕的。在与Maven合作之后,常春藤不符合我的期望。 - Matthias Hryniszak
Ivy只是采用不同的方式来处理依赖关系管理。 - Mark O'Connor
-1对Mark的评论。这不是一个不同的方式,它是一个缺少的功能。作为一个类比:想象一下,你使用的浏览器没有“代理配置”的设置,但这并不意味着它以不同的方式接近网页浏览,这意味着当你真正需要时软件是无法使用的(没有黑客)设置代理。 - Hendy Irawan
@ Heron的评论如下,这个答案是错误的或过时的。 - recampbell


答案:


我不认为这种选择直接存在。你可以尝试实现一个 ,并将您的Nexus存储库置于该链中的核心位置。如果我理解链是如何正常工作的(这是一个很大的问题),Ivy会在中心之前检查你的存储库,所以只要你的存储库有相关内容就不需要。

教程 详情。


6
2017-07-08 16:26



谢谢 - 这就是我一直害怕的。在与Maven合作之后,常春藤不符合我的期望。 - Matthias Hryniszak
Ivy只是采用不同的方式来处理依赖关系管理。 - Mark O'Connor
-1对Mark的评论。这不是一个不同的方式,它是一个缺少的功能。作为一个类比:想象一下,你使用的浏览器没有“代理配置”的设置,但这并不意味着它以不同的方式接近网页浏览,这意味着当你真正需要时软件是无法使用的(没有黑客)设置代理。 - Hendy Irawan
@ Heron的评论如下,这个答案是错误的或过时的。 - recampbell


你需要创建一个符合你想要的公共解析器(更多细节@ 常春藤文档

基本上将以下代码保存在$ USERHOME / .ivy2 / ivysettings-public.xml下。这应该可以解决问题。

<ivysettings> 
  <resolvers> 
    <ibiblio name="public" m2compatible="true" root="http://localhost:8081/content/groups/public"/> 
  </resolvers> 
</ivysettings>
  • 未修改的标准安装在URL中有'nexus'!
  • 如果您需要部署工件,我认为解决方案是执行与共享解析程序类似的操作(请参阅上面的文档链接),但我还没有尝试过。
  • 我更改了您的本地URL以解析为标准的'content / groups / public',这是更好的,因为在上面的maven设置片段中,您通过镜像传递所有呼叫,而不仅仅是中心的呼叫。只需在Nexus UI中添加任何其他存储库,就可以了。您应该没问题。
  • 如果你的项目加载了它自己的ivysettings,它不符合默认值,那么这些设置将不会被加载,你再次回到零:(

8
2018-03-12 19:53



我会尝试一下,但似乎项目的ivysettings.xml完全覆盖了用户的配置这对我来说不会有用。但无论如何,谢谢! - Matthias Hryniszak
问题在于,应该能够从存储库中获取项目并构建它。随着对当地环境的任何修改,它都在窗口......但不管怎样,谢谢您的回复! - Matthias Hryniszak
用这个技术试过 svn.apache.org/repos/asf/ant/core/trunk/... 它似乎没有任何影响;消息称为“下载 repo1.maven.org/maven2 / ......”;像之前一样。 - Jesse Glick
似乎对我不起作用。我不得不补充一下 <ivy:settings file="/Users/wdb/.ivy2/ivysettings-public.xml" /> 在我的ant文件中,但它失败了: no resolver found for net.wimpi#jamod - Wim Deblauwe


这就是我的工作方式(@Heron的答案对我不起作用):

使用此内容创建一个文件:

<ivysettings>
  <settings defaultResolver="default"/>
  <property name="m2-pattern" value="${user.home}/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" override="false" />
  <resolvers>
    <chain name="default">
        <ibiblio name="public" m2compatible="true" root="http://nexus-server:8081/nexus/content/groups/public"/>
    </chain>
  </resolvers>
</ivysettings>

从ant build中引用它:

<ivy:settings file="/Users/wdb/.ivy2/ivysettings-public.xml" />

Ivy现在能够从我的nexus存储库中解析依赖关系。


2
2018-03-25 15:41





我和Archiva做了同样的事,非常相似。您只需要在新链中声明以下内容:

<chain name="private">
<url name="archiva" m2compatible="true">
  <ivy pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/ivy.xml" /> 
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact].[ext]" /> 
  </url>
</chain>

-1
2017-10-06 15:30



使用Archiva实现代理不在问题的范围内。您可以通过多种方式实现这一目标。问题是从常春藤中使用它与maven中使用的方式类似。 - Matthias Hryniszak
我认为常春藤不存在这样的选择。 - David García González


Archiva管理Maven 2存储库(使用Maven元数据的工件) 通常没有常春藤元数据(ivy.xml)。 Maven 2布局是[组织] / [模块] / [修订] / [工件] - [修订]。[ext]。

我们只需提供以下信息

<url name="archiva" m2compatible="true">
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
  </url>
</chain>

要么

  <settings defaultResolver="archiva"/>
  <resolvers>
<ibiblio name="archiva" m2compatible="true" root="http://.../archiva/repository/internal/[organization]/[module]/[revision]/[artifact]-[revision].[ext]"/>
  </resolvers>

-1
2017-11-04 21:43



使用Archiva实现代理不在问题的范围内。您可以通过多种方式实现这一目标。问题是从常春藤中使用它与maven中使用的方式类似。 - Matthias Hryniszak