假设我有一个依赖于JAR A中的类的项目,该项随后依赖于JAR B中的类。要运行该项目,两个jar都需要位于同一个类路径上。我有三个部分的源代码 - 项目,JAR A和JAR B.
如果我在不更改API的情况下更改JAR B中类的方法的内部,我是否需要针对它重新编译JAR A,或者我可以将它放到项目的类路径中去吗?
如果我考虑一下,我认为我不需要,但我只想仔细检查。当我只是尝试向JAR B添加额外的日志记录而对JAR A没有任何影响时,一直在复制文件是非常烦人的。
答案 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.