假设我有一个依赖于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