填充 Jar A 的代码只需要能够编译即可创建 jar。
如果它依赖于 Jar B 进行编译,那么 Jar B 需要存在到满足 Jar A 的代码对它的所有引用的程度。
反之亦然。
编译 Jar A 的代码后,您可以创建它的 jar 并忘记它。
然后,只要 Jar A 使用的 API 不变,您就可以随意更改 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。