几天来,我一直在尝试但只是未能让 apache ivy 解决我在 ivy .xml 中声明的依赖项的依赖项,当根依赖项来自我的本地存储库时。来自我的公共仓库 (maven) 的根依赖项运行良好,甚至在我编辑其中一个常春藤时也能工作.xml指向对本地仓库中模块的依赖。但是我的本地存储库的传递依赖项解析将不起作用。我检查了解析的常春藤.xml缓存中的一个本地模块,依赖项部分已被清除!有什么我必须做的吗?
这是我的常春藤设置.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>
这是我的常春藤本地.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>
如果您要创建自己的设置文件,请让它列出所有解决方法(调试起来要简单得多)。在这种情况下,我怀疑您的问题是您的文件系统解析器缺少"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和本地存储库。以下示例进一步演示了如何使用"module"指令将 ivy 引导至依赖于依赖项的特定存储库:
- 将公共 maven 存储库与 ivy 一起使用