重新编译Jar依赖项

时间:2010-11-07 21:39:57

标签: java jar dependencies

假设我有一个依赖于JAR A中的类的项目,该项随后依赖于JAR B中的类。要运行该项目,两个jar都需要位于同一个类路径上。我有三个部分的源代码 - 项目,JAR A和JAR B.

如果我在不更改API的情况下更改JAR B中类的方法的内部,我是否需要针对它重新编译JAR A,或者我可以将它放到项目的类路径中去吗?

如果我考虑一下,我认为我不需要,但我只想仔细检查。当我只是尝试向JAR B添加额外的日志记录而对JAR A没有任何影响时,一直在复制文件是非常烦人的。

2 个答案:

答案 0 :(得分:3)

我认为你是对的:你只需重新创建包含新类的JAR B,并将其与JAR A和C一起放在类路径中。

答案 1 :(得分:0)

填充Jar A的代码只需要能够编译才能创建jar。

如果它依赖于Jar B进行编译,那么Jar B需要存在,以满足Jar A代码对它所做的所有引用。

反之亦然。

一旦Jar A的代码编译完毕,你可以创建它的jar并忘掉它。

只要API Jar A使用不变,您就可以根据需要更改Jar B.

EG:

在Jar B中定义一个函数:

public class JarBClass
{
    public static void doSomething()
    {
        throw new RuntimeException();
    }
}

这个编译,您可以创建Jar B。

在Jar A中你引用了这个函数:

public class JarAClass
{
    public static void useSomething()
    {
        JarBClass.doSomething();
    }
}

这个编译并且您可以创建Jar A,但是运行它会引发异常。

您可以更新Jar B代码:

public class JarBClass
{
    public static void doSomething()
    {
        System.out.println("all good");
    }
}

这个编译,你可以重新创建Jar B. Jar A可以毫无例外地运行。

但是,如果您更新Jar B并更改API:

public class JarBClass
{
    public static void doSomething(String what)
    {
        System.out.println(what + " is all good");
    }
}

您需要修改并重新编译Jar A.