0

我要从 ivy 缓存中检索一个 jar 到 lib 文件夹,下面是 ivy.xml 代码:

    <configurations>
        <conf name="specificFolder"  description="add jar to web-inf/lib folder"/>
    </configurations>
    <dependencies>
        <dependency org="javax.servlet" name="servlet-api" rev="2.4" transitive="false" conf="specificFolder"/>
        <dependency org="org.springframework" name="spring-beans" rev="2.5.5" transitive="false" />
        <dependency org="org.springframework" name="spring-webmvc" rev="2.5.5" transitive="false" />
        <dependency org="org.springframework" name="spring-web" rev="2.5.5" transitive="false" />
        <dependency org="org.springframework" name="spring-context" rev="2.5.5" transitive="false" />
        <dependency org="org.springframework" name="spring" rev="1.2.6" transitive="false" />

那么这是蚂蚁目标:

<target name="test">
    <ivy:retrieve pattern="lib/[artifact](.[ext])" sync="true" type="jar" conf="specificFolder"/>
</target>

但是我得到了“未解决的依赖”,这是我做错了什么吗?

4

1 回答 1

2

我重现了您的问题,这是相关的错误消息:

[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       ::          UNRESOLVED DEPENDENCIES         ::
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       :: javax.servlet#servlet-api;2.4: configuration not found in javax.servlet#servlet-api;2.4: 'specificFolder'. It was required from com.myspotontheweb#demo;????? specificFolder
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::

根本原因是以下依赖声明:

<dependency org="javax.servlet" name="servlet-api" ... conf="specificFolder"/>

虽然配置存在于您的模块中,但它不存在于远程 Maven 模块中。有关如何查看以下答案的更多详细信息:

工作示例

常春藤.xml

<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="demo"/>

    <configurations>
        <conf name="specificFolder"  description="add jar to web-inf/lib folder"/>
    </configurations>
    <dependencies>
        <dependency org="javax.servlet" name="servlet-api" rev="2.4"            conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring-beans" rev="2.5.5"   conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring-webmvc" rev="2.5.5"  conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring-web" rev="2.5.5"     conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring-context" rev="2.5.5" conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring" rev="1.2.6"         conf="specificFolder->master"/>
    </dependencies>

</ivy-module>

笔记:

  • 此示例使用配置映射而不是“transitive=false”。本地配置是“specificFolder”,远程配置是特殊的“master”。“master”由 Maven 模块提供,表示没有依赖关系的远程工件。我认为一旦了解了配置的工作原理,这种方法就更简单了。(Maven中非常强大的概念)
  • ivy 依赖部分中的小箭头 -> 做什么?
于 2013-01-10T21:41:11.253 回答