4

我想通过 ivy 将 jar 检索到特定文件夹(如 lib),下面是我在 build.xml 中的检索定义:

<ivy:retrieve pattern="lib/[artifact].[ext]" conf="webInfLib" />

我的 ivy.xml 的定义如下:

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
       xmlns:m="http://ant.apache.org/ivy/maven">
    <info organisation="xxxx" module="xxxx" status="integration"/>
    <configurations>
        <conf name="webInfLib"  description="add jar to web-inf/lib folder"/>
    </configurations>
    <dependencies>
        <dependency org="org.springframework" name="spring-beans" rev="2.5.5" transitive="false" conf="webInfLib -> default"/>
        <dependency org="net.sf.json-lib" name="json-lib" rev="2.3"> 
            <artifact name="json-lib" type="jar" m:classifier="jdk15"/>
        </dependency>
    </dependencies>
</ivy-module>

但它总是抛出:

impossible to ivy retrieve: java.lang.RuntimeException: Multiple artifacts of the module xxxxxx are retrieved to the same file! Update the retrieve pattern  to fix this error.

我已经阅读了一些类似的问题,他们建议将检索模式更改为更复杂的模式。我尝试了类似“[artifact]-revision.[ext]”的东西,但没有帮助。当我执行“ivy.resolve”时,它可以正常工作。关于这个问题有什么建议吗?

4

1 回答 1

4

检索模式是真正的问题。你在尝试

[artifact]-[revision].ext

所以我想二进制 jar 和源 jar 将被写在同一个位置,用于任何任意依赖。但是,如果您为您所拥有的案例添加一些独特的东西

[artifact]-[revision](-[classifier]).[ext]

在源或文档的情况下,分类器将具有一个值,因此将具有不同的名称。如果没有分类器(如二进制编译 jar 的情况),则不会有任何分类器,这由括号 ( ) 处理

于 2013-01-09T09:05:34.050 回答