1

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

有没有办法在 Ivy 中做到这一点?

我能想到这样做的唯一方法是在我的创建两个单独的配置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 加载到类路径中的方式。

有没有办法做到这一点?

4

1 回答 1

1

每个 Ivy Ant 任务甚至 IvyDE 都遵守 ivy.xml 文件中依赖项声明的顺序。因此,如果在您的 ivy.xml 中,您在 b.jar 之前声明了对 a.jar 的依赖,则生成的类路径将首先具有 a.jar,然后是 b.jar。

于 2013-04-27T14:02:13.553 回答