我有一个Maven项目,该项目依赖于其他Maven项目。我已经设法通过“项目结构”将那些依赖模块导入到我的项目中。能够mvn全新安装并能够运行该程序。同样在我的主项目中,如果要“命令单击”位于依赖模块中的文件,它将很好地转到该.java文件(而不是转到.class文件)。
但是当我运行程序时,在依赖项项目下进行的更改不会反映出来。重建或安装新的mvn并没有任何区别。
例如,我尝试仅在依赖模块中的类中添加新的变量声明。当我运行程序并通过调试检查时,此变量甚至不存在。
在依赖模块内部的类中类似地创建了整个方法。 该方法也不存在。当我将鼠标悬停在此方法下的断点上时,出现以下消息:
在com.name类的第112行找不到可执行代码。...
可能有用的信息。
该项目运行正常,而无需添加这些依赖项cos,它们作为该项目的一部分以jar文件形式存在。由于需要更改这些依赖项,因此我通过“项目结构”删除了这些jar文件,而是通过“项目结构”将这些依赖项导入为模块。
如上所述,这是有效的。我能够构建和启动该应用程序。当我进行更改时,只是看不到更改。
另一个问题浮出水面,我再次不明白。在我对依赖项进行更改之前,有一个参数在我的主项目上不起作用(编译失败)。现在它在编译方面运行良好。但是,当我运行它时,在调试下我得到了正确的参数值,但是在下一步之后,它只是跳转到 InvocationTargetException 。在下面的代码更改中添加了简短的代码段。
// Under Main Project
someMethod(Doable do){
// do something
}
DoSomething doSomething = null;
someMethod(doSomething); // compilation error unless I implement Doable
// Under dependency
// implement Doable is the change which compiles now
class DoSomething implements Doable{
//implement something
}
添加了项目结构以供参考。 请指教。谢谢。
MyMainProject
mvn_structure
pom.xml
MainDependency
SubDependency1
mvn_structure
pom.xml
SubDependency2
mvn_structure
pom.xml
SubDependency3
mvn_structure
pom.xml
pom.xml
答案 0 :(得分:0)
您的项目依赖于Maven存储库中的依赖罐,而不依赖于依赖源代码(其他项目)。因此,为了使对其他项目的更改可用于您的项目,您需要首先构建其他项目,以便更新存储库中的其jar。只有这样,这些更改才可用于您的项目。