Ant集成Ivy时出现No appropriate method found错误求助
问题:Ant集成Ivy依赖管理时加载ivysettings.xml失败
执行build.xml中resolve目标(第29行<ivy:retrieve/>)时出现错误:
...\IdeaProjects\...\build.xml:29: impossible to configure ivy:settings with given file: ...\IdeaProjects\...\ivysettings.xml : java.text.ParseException: failed to load settings from file:.../IdeaProjects/.../ivysettings.xml: no appropriate method found for adding default on class org.apache.ivy.core.settings.IvySettings
相关配置文件
1. build.xml片段
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="My library" basedir="." default="dist"> ... <!-- ================================= target: resolve ================================= --> <target name="resolve" description="--> retrieve dependencies with Ivy"> <ivy:retrieve/> <!-- line 29 --> </target>
2. ivysettings.xml内容(错误版本)
<ivy-settings> <settings defaultResolvers="public"> <resolvers> <default name="public" description="Public Maven Repository" class="org.apache.ivy.plugins.resolver.DefaultResolver"> <root>https://repo.maven.apache.org/maven2/</root> <strategy name="default" description="Default Strategy" /> </default> </resolvers> </settings> </ivy-settings>
3. ivy.xml内容
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://antlib.oslab.org/ivy/ivy.xsd"> <info organisation="com.xxx" module="my-common"/> <dependencies> <dependency org="org.springframework" name="spring-jdbc" rev="6.2.5"/> <dependency org="org.springframework" name="spring-tx" rev="6.2.5"/> <dependency org="org.springframework" name="spring-orm" rev="6.2.5"/> </dependencies> </ivy-module>
环境说明
- IntelliJ中操作
- 使用本地安装的Ant(已配置ANT_HOME)
- Ivy jar已放入
$ANT_HOME/lib目录
解决方案
错误根源是ivysettings.xml中使用了错误的解析器标签<default>,Ivy无法识别该标签对应的配置方法。要配置Maven中央仓库,应使用专门的<ibiblio>解析器(原生支持Maven仓库格式),修改后的ivysettings.xml如下:
<ivy-settings> <settings defaultResolvers="public"/> <resolvers> <!-- 使用ibiblio解析器配置Maven中央仓库 --> <ibiblio name="public" m2compatible="true" root="https://repo.maven.apache.org/maven2/"/> </resolvers> </ivy-settings>
若ivysettings.xml不在项目根目录等默认加载路径,需在build.xml的resolve目标中显式指定配置文件路径:
<target name="resolve" description="--> retrieve dependencies with Ivy"> <ivy:settings file="path/to/ivysettings.xml"/> <ivy:retrieve/> </target>
内容的提问来源于stack exchange,提问作者Thom
相关产品推荐
相关产品推荐

