繁体   English   中英

将捆绑的Maven项目添加为外部jar

[英]Add bundled maven project as external jar

我有一个依赖于另一个Maven项目的Maven项目,该项目在公共仓库中不可用。 我们称它们为项目A和B,而A取决于B。

我目前正在通过将其声明为我已放置在项目内仓库中的外部依赖项来引入项目A中的B。 (我将B项目中的mvn bundle:bundle称为Bv,然后将生成的jar复制到项目A中)。问题是,通过执行此maven不能推断出B是依赖的,因为它是捆绑的jar。

假设项目A和B都依赖于另一个Maven项目C,该项目在远程Maven存储库中可用。 项目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外部手动设置构建顺序,而根本不使用它进行编译。

编辑:好的,我通过将(artifactId)-(version).pom文件包含在与jar相同的目录中来使maven获得依赖项列表而使其工作

如果您按照教程使用maven(例如here ),它就可以工作。 你为什么要bundle 为什么需要复制某些东西? 只需在A的pom.xml中将B声明为依赖项,然后为B执行mvn install ,那么A将从您本地的Maven存储库中使用它。

另外,如果仅将两个模块都添加到单个项目中(我正在使用IDEA),则IDE会识别依赖性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM