код, который заполняет Jar A, должен быть в состоянии компилироваться только для создания jar.
Если для компиляции используется Jar B, то Jar B должен существовать в той степени, в которой он удовлетворяетвсе ссылки, сделанные на него кодом для Jar A.
Обратное также верно.
Как только код для Jar A скомпилирован, вы можете создать его jar и забыть о нем.
Затем вы можете изменять Jar B столько раз, сколько хотите, если API Jar A не меняется.
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.