如何导出将在另一个Java项目中使用的jar,以及jar使用的整个maven / external依赖项?

时间:2016-09-23 10:18:53

标签: java eclipse maven jar

很抱歉,如果我的标题不清楚。

我的一些团队成员已经为我构建了一个jar,我们将其称为B.该jar依次使用特定的maven依赖(purejavacomm),我们称之为C.他们通过导出它给了我B作为可运行的jar,选择“Package required libraries”选项。但是,当我将B导入我的项目并尝试使用它时,我得到了一个java.lang。关于C中的某些类(特别是自定义异常类)的NoClassDefFoundError和java.lang.ClassNotFoundException。我猜这些类是那些在B中没有明确调用的类,这就是为什么它们没有与它打包在一起。

因此除非我在自己的pom中包含C的maven依赖,否则我不能使用B.他们是否有可能以这样的方式导出他们的B,我不必显式添加C?即确保B中包含整个C,而不仅仅是明确使用的类?

我们正在使用Eclipse和m2e,所以我们没有通过mavens命令行语句运行任何这些。

2 个答案:

答案 0 :(得分:0)

我假设您的问题在运行时发生。如果您在pom.xml B中将C的依赖关系指定为:root ul li.open, :root ul li.closed { list-style-position: outside\; float:right\; width:calc(100% - 20px)\; } ,并在运行时环境中包含C.jar(例如在项目的lib文件夹下),则告诉maven您正在处理您的依赖关系为C.jar。这将解决您的问题。

答案 1 :(得分:0)

您应该在公司使用自己的maven存储库(请参阅Maven best practices)。

它的作用类似于公共存储库的代理,此外,您可以将自己的内部JAR推送到您的仓库。

然后在您的maven配置中,您应该只指向您的公司回购。然后您的团队成员可以将他们的JAR B发布到repo中,您只需要在您自己的POM中将依赖项添加到B.