【问题标题】:Retrieve Specific jar to a Folder将特定 jar 检索到文件夹
【发布时间】:2012-12-24 23:56:31
【问题描述】:

我是从 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>

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

【问题讨论】:

    标签: ivy


    【解决方案1】:

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

    [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 模块中。有关如何查看以下答案的更多详细信息:

    工作示例

    ivy.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 中非常强大的概念)
    • what does the little arrow -> do in the ivy dependency section?

    【讨论】:

    • 感谢您的详细解释和知识分享,真的很有帮助!再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2015-09-29
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2018-05-17
    相关资源
    最近更新 更多