我最近遇到了同样的问题,即部分 ivy 集成到遗留项目中,只是为了从 maven 世界中获取一些传递依赖项,同时保留现有的 ant 构建过程。还必须通过使用解析为虚拟 jar 的假本地文件系统解析器来避免使用 ivy 发布项目模块。
常春藤设置.xml
<ivysettings>
<settings defaultResolver="default">
<property name="local.maven2.dir" value="${user.home}/.m2/repository/" override="false"/>
<property name="local-project.cache.dir" value="${ivy.settings.dir}/cache" override="false"/>
</settings>
<caches resolutionCacheDir="${local-project.cache.dir}" lockStrategy="artifact-lock" useOrigin="true">
<cache name="local-project" basedir="${local-project.cache.dir}" useOrigin="true"/>
</caches>
<resolvers>
<chain name="default">
<filesystem name="local-maven-2" m2compatible="true" checkmodified="true" changingPattern=".*SNAPSHOT">
<artifact pattern="${local.maven2.dir}/[organisation]/[module]/[revision]/[module]-[revision].[ext]"/>
<ivy pattern="${local.maven2.dir}/[organisation]/[module]/[revision]/[module]-[revision].pom"/>
</filesystem>
<ibiblio name="central" m2compatible="true"
root="http://repo1.maven.org/maven2/"/>
</chain>
<filesystem name="local-project" force="true" checkmodified="true" changingPattern=".*" cache="local-project">
<artifact pattern="${ivy.settings.dir}/dummy.jar"/>
<ivy pattern="${ivy.settings.dir}/[module]-ivy.xml"/>
</filesystem>
</resolvers>
<modules>
<module organisation="example.com" resolver="local-project"/>
</modules>
</ivysettings>
不得不从 ant 中排除虚拟罐子,因为无法使用 ivy 找到更好的方法:
<ivy:retrieve pattern="${dependency.export.dir}/[conf]/[artifact](-[revision]).[ext]" type="jar,bundle"/>
<delete>
<fileset dir="${dependency.export.dir}">
<include name="**/*@local-project.jar"/>
</fileset>
</delete>
仍在努力寻找一种方便的方法来排除使用 ivy 提供的依赖项。
如果有人对示例项目源感兴趣,可以在IVY-1443错误附件中找到。