Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将绑定的maven项目添加为外部jar_Java_Maven_Jar - Fatal编程技术网

Java 将绑定的maven项目添加为外部jar

Java 将绑定的maven项目添加为外部jar,java,maven,jar,Java,Maven,Jar,我有一个maven项目,它依赖于另一个maven项目,该项目在公共回购协议中不可用。我们把它们称为A和B项目,A依赖于B 我目前在项目A中引入B,将其声明为外部依赖项,并将其放置在项目内回购中。(我在项目B中称为mvn bundle:bundle,只需将生成的jar复制到项目A)问题是,通过这样做,maven无法推断B依赖哪些依赖项,因为它是一个绑定的jar 让我们假设项目A和B都依赖于另一个maven项目C,该项目在远程maven存储库中可用。项目A使用项目C版本0.2,项目B使用项目C版本0

我有一个maven项目,它依赖于另一个maven项目,该项目在公共回购协议中不可用。我们把它们称为A和B项目,A依赖于B

我目前在项目A中引入B,将其声明为外部依赖项,并将其放置在项目内回购中。(我在项目B中称为mvn bundle:bundle,只需将生成的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中,我们得到一个runtime methodNotFound错误

你知道我该怎么处理吗?是否可以在捆绑的项目B jar中包含pom.xml文件,以便maven知道B依赖C作为依赖项,并且可以自行解决问题

我目前解决这个问题的方法就是在maven之外手动设置构建顺序,而不使用它进行编译


编辑:好的,我通过在jar for maven的同一目录中包含一个(artifactId)-(version).pom文件来获得依赖项列表,如果您按照教程使用maven(例如),它就可以工作了。你为什么要捆绑?你为什么需要复制一些东西?只需在A的pom.xml中将B声明为依赖项,并为B执行
mvn安装
,然后A将从本地maven repo使用它


另外,如果您只是将两个模块添加到单个项目中(我使用IDEA),IDE识别出了依赖关系。

是什么阻止了您将project B的
mvn安装到本地存储库中,然后让project a依赖于该工件?我认为这基本上就是我正在做的,但它不允许project a知道project B依赖于什么(如果我做mvn dependency:项目A中的树,它会将B显示为自己的叶子)这个问题也可以为您提供一些帮助: