我已经尝试了几天,并且根本无法获得apache ivy来解析我在ivy.xml中声明的依赖关系的依赖关系,当根依赖关系来自我的本地存储库时。来自我的公共存储库(maven)的root依赖项运行良好,甚至可以在我编辑其中一个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>
答案 0 :(得分:3)
如果您要创建自己的设置文件,那么让它列出您的所有结果(更简单的调试)。在这种情况下,我怀疑你的问题是你的文件系统解析器缺少一个“常春藤”标签,这可能解释了缺少的传递依赖。
尝试以下内容:
<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引导到依赖于依赖项的特定存储库: