常春藤 - 用Ivy指定编译/运行时类路径

时间:2013-04-24 19:40:09

标签: ant classpath ivy

我有一个项目有两个不同的jar,两个都包含一些相同的类。我需要的是它在Jar“B”之前使用Jar“A”中的类。在普通的Java编译中(和Ant),我可以指定类路径本身的顺序。这样,我可以保证Jar“A”中的类将在Jar“B”中的类之前使用。

有没有办法在常春藤做到这一点?

我能想到这样做的唯一方法是在ivy.xml中创建两个单独的配置:

<dependency org="com.vegibank" name="a.jar"
    rev="1.0" conf="foo->default"/>

<dependency org="com.vegibank" name="b.jar"
    rev="1.0" conf="compile->default"/>

然后创建两个单独的路径类引用:

<ivy:cachepath pathid="compile.foo.classpath"
    conf="foo"/>
<ivy:cachepath pathid="compile.normal.classpath"
    conf="compile"/>

然后在<javac/>中,我可以指定路径:

<javac ...>
    <classpath refid="compile.foo.classpath"/>
    <classpath refid="compile.normal.classpath"/>
</javac>

但是,我认为必须有一种方法可以保证当Ivy解析时jar的加载方式。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

每个Ivy Ant任务甚至IvyDE都尊重ivy.xml文件中依赖项声明的顺序。因此,如果在你的ivy.xml中你在b.jar之前声明对a.jar的依赖,那么生成的类路径将首先是a.jar而后面是b.jar。