假設我有一個依賴於JAR A中的類的項目,後者對JAR B中的類有依賴關係。要運行該項目,兩個jars都需要位於同一個類路徑中。我有所有三個部分的源代碼 - 項目,JAR A和JAR B.重新編譯Jar依賴關係
如果我更改JAR B中類中方法的內部而不更改API,是否需要重新編譯JAR A來對付它,還是我可以把它放到項目的類路徑中去?
如果我想一想,我不認爲我需要,但我只是想仔細檢查。當我只是想將額外的日誌記錄添加到對JAR A沒有影響的JAR B時,它總是非常煩人的複製文件。
假設我有一個依賴於JAR A中的類的項目,後者對JAR B中的類有依賴關係。要運行該項目,兩個jars都需要位於同一個類路徑中。我有所有三個部分的源代碼 - 項目,JAR A和JAR B.重新編譯Jar依賴關係
如果我更改JAR B中類中方法的內部而不更改API,是否需要重新編譯JAR A來對付它,還是我可以把它放到項目的類路徑中去?
如果我想一想,我不認爲我需要,但我只是想仔細檢查。當我只是想將額外的日誌記錄添加到對JAR A沒有影響的JAR B時,它總是非常煩人的複製文件。
填充Jar A的代碼只需要能夠編譯以創建jar即可。
如果它依賴於罐B到編譯,則罐B需要存在的範圍內,它滿足所有由代碼罐A.
相反也是如此向它提出的參考文獻中。
一旦Jar A的代碼編譯完成,您可以創建它的jar並忘記它。
然後,只要API Jar A使用的API不會更改,就可以隨意更改Jar B.
EG:
在罐乙你定義一個函數:
public class JarBClass
{
public static void doSomething()
{
throw new RuntimeException();
}
}
此編譯並可以創建罐B.
在罐子您引用功能:
public class JarAClass
{
public static void useSomething()
{
JarBClass.doSomething();
}
}
這個編譯和你可以創建罐子A,但運行它會拋出一個異常。
您可以更新您的Jar B碼:
public class JarBClass
{
public static void doSomething()
{
System.out.println("all good");
}
}
這編譯,你可以重新創建罐B.罐子可以無一例外運行。
但是如果你更新瓶B和改變API:
public class JarBClass
{
public static void doSomething(String what)
{
System.out.println(what + " is all good");
}
}
您將需要修改和重新編譯罐A.
我認爲你是正確的:你只需重新創建JAR B包含新類並將其與JAR A和C一起放入類路徑中。
聽起來很簡單的測試! – pstanton 2010-11-07 22:48:56