我有一个maven项目依赖于另一个maven项目,这个项目在公共仓库中是不可用的。我们称它们为项目A和B,A取决于B。
我目前正在项目A中引入B,将其声明为外部依赖项,我已将其置于项目回购中。 (我在项目B中调用mvn bundle:bundle并将生成的jar复制到项目A)问题是,通过这样做,maven无法推断出B依赖哪些依赖关系,因为它是一个捆绑的jar。
假设项目A和B都依赖于远程maven存储库上可用的另一个maven项目C.项目A使用项目C,版本0.2,项目B使用项目C,版本0.1。但是,由于项目B作为外部捆绑jar在项目A中加载,因此maven不知道这一点。在运行时,项目A尝试调用存在于C 0.2但不存在于C 0.1中的方法。然而,maven通过首先导入项目B然后将C作为远程依赖项来构建项目,因此C 0.2不在捆绑项目A jar中,并且我们得到运行时methodNotFound错误。
知道如何处理这件事吗?是否有可能只是在某种程度上包含一个带有捆绑项目B jar的pom.xml文件,因此maven知道B依赖C作为依赖项并且可以将问题排除在外?
我目前解决这个问题的方法只是手动设置maven之外的构建顺序,而不是完全使用它进行编译。
编辑:好的我通过在与maven的jar相同的目录中包含一个(artifactId) - (version).pom文件来获得依赖列表
答案 0 :(得分:0)
如果您按照教程使用maven(例如here),它就可以了。你为什么要做bundle
?你为什么要复制一些东西?只需将B声明为A的pom.xml中的依赖项,然后为B执行mvn install
,然后A将从您当地的maven repo中使用它。
此外,如果您只是将两个模块添加到单个项目中(我使用IDEA),IDE会识别依赖项。