当前位置: 首页 > 知识库问答 >
问题:

无法让ivy解决本地存储库中模块的传递依赖关系

毛缪文
2023-03-14

几天来,当根依赖来自我的本地存储库时,我试图让apache常春藤解决我在ivy.xml中声明的依赖关系,但失败了。我的公共存储库(maven)中的根依赖关系工作得很好,甚至在我编辑ivy.xml指向本地存储库中模块的依赖关系时也能工作。但是本地存储库的传递依赖解决方案将不起作用。我检查了缓存中一个本地模块的解析ivy.xml,依赖部分已经被清除了!有什么我必须做的吗?

这是我的ivysettings.xml文件

<ivysettings>
  <settings defaultResolver="default"/>
  <caches useOrigin="true"/>
  <include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
  <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
  <include file="${ivy.default.ivy.user.dir}/settings/ivysettings-local.xml"/>
  <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> 
  <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>

这是我的ivysettings-local.xml档案:

<ivysettings>
  <property name="ivy.local.default.root"
        value="${ivy.default.ivy.user.dir}/local" override="false"/>
  <property name="ivy.local.default.ivy.pattern"
        value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override="false"/>
  <property name="ivy.local.default.artifact.pattern"
        value="[organisation]/[module]/[revision]/[type]s/[artifact].[ext]" override="false"/>
  <resolvers>
    <filesystem name="local">
      <artifact
        pattern="${ivy.local.default.root}/[organisation]/[module]/[revision]/[type]s/[artifact]-[revision].[ext]" />
    </filesystem>
  </resolvers>
</ivysettings>

共有1个答案

贲宜春
2023-03-14

如果要创建自己的设置文件,请让它列出所有解析(调试起来要简单得多)。在这种情况下,我怀疑您的问题是您的文件系统解析器缺少一个“ivy”标记,这可能解释了缺少可传递依赖项的原因。

请尝试以下操作:

<ivysettings>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name="central" m2compatible="true"/>
            <filesystem name="local">
                <ivy pattern="${ivy.default.ivy.user.dir}/local/[organisation]/[module]/ivys/ivy-[revision].xml"/>
                <artifact pattern="${ivy.default.ivy.user.dir}/local/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/>
            </filesystem>
        </chain>
    </resolvers>
</ivysettings>

正如您所看到的,链解析器包括Maven Central和本地存储库。以下示例进一步演示了如何使用“模块”指令引导ivy走向依赖于依赖关系的特定存储库:

  • 使用ivy的公共maven存储库
 类似资料:
  • 我们有一个项目a依赖于项目B,项目B依赖于图书馆C。a和B是本地项目,而C是maven central repo的公共图书馆。 波姆。xml用于: 波姆。用于B的xml: 在A中运行mvn dependency:tree-Dverbose时,它不会解析B的依赖项,B中使用的此类依赖项也不会显示在A的Maven依赖项中。这对于编译很好,但在运行时会因为NoClassDefFound错误而失败。 有没

  • 我对ivy没有解析我的一些依赖关系有问题。以下是我如何重现这个问题的: 我在eclipse中有一个空的java项目。我已经在我的项目中添加了ivy.xml: 这工作正常,ivy能够解决和下载口水。 如果我将修订版更改为6.3.0.Final(http://mvnrepository.com/artifact/org.drools/drools-core/6.3.0.Final),它将不起作用,我看

  • 问题内容: 我在ivaven.xml中添加了一个依赖项(让我们将其命名为A),它在maven Central中具有一个pom文件。Ivy使用ibiblio解决了Maven依赖关系。添加到ivy.xml的依赖项(A)具有传递的依赖项(B)。到目前为止,到目前为止很好。常春藤无法解决传递性依赖项(B)的依赖项(C)。 我在ivy.xml中定义了A,如下所示: 在B的pom文件中,在编译和测试范围中都定

  • 我有一个奇怪的问题,< code > mvn clean install-d project . version = 1 或< code>jenkins build运行正常,但当我在IDE中打开模块时,intellij变得非常愤怒,这影响了开发。 我在intellij日志中看到以下问题 POM 代码受版权保护,所以不能透露,但这是一个基本大纲 < li>fabric-common:基本模块(用于绑

  • 问题内容: 我有一个带有内部jar文件的项目内仓库的Maven项目。我使用install命令将jar文件安装到内部注入存储库中,当我在存储库中签入安装jar文件时,我还在pom文件中添加了依赖项配置。但是当我运行mvn编译文件时。我收到mvn无法解决依赖关系的错误 这是Pom片段: 这是POM中的依赖 这是错误消息: [INFO]最终内存:6M / 309M 是否有人对此错误有任何建议。 这是使用

  • 我给ivy添加了一个依赖项(我们称之为a)。在maven central中具有pom文件的xml。Ivy使用ibiblio来解析maven依赖项。添加到常春藤中的依赖项(A)。xml具有可传递依赖项(B)。到目前为止,一切都很好。传递依赖(B)的依赖(C)不能用常春藤来解决。 我在常春藤上定义了一个新的名字。如下所示的xml: 在B的pom文件中,C在编译和测试范围中定义如下: 当我在ivy的缓存