我在另一个maven项目中添加了一个maven项目作为依赖项

时间:2016-04-21 16:49:13

标签: java maven netbeans-8

我在另一个maven项目B中添加了一个maven项目A作为依赖项,然后通过反射访问另一个项目中由B创建的jar,但是它为maven项目A中的类抛出NoClassDefFound错误

我的问题是,如何在项目B的类路径中显示项目A中的类?我尝试添加一个MANIFEST.MF,但这似乎只适用于jar和类文件。所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

maven依赖的性质由四元组(四件事的集合)指定:GroupIDArtifactIDversion,以及经常被遗忘的scope 。前三个统称为依赖的GAVscope确定如何在运行时使用依赖项。

在您的情况下,似乎正在发生的事情是:

  1. 项目A已编译并安装在本地仓库中(例如,使用mvn install命令)。
  2. 在项目B的pom.xml中,您将项目A的GAV指定为正确的<dependecy>声明,并且编译和打包似乎已经完成。
  3. 但由于项目B的最终JAR没有项目A类,因此运行项目B失败,因为找不到找不到的。
  4. 基本上,您需要告诉Maven依赖的范围。在您的情况下,由于项目A的类在预定义的运行时(例如Tomcat或GlassFish Web容器)不可用,您需要确保将它们与项目B的JAR文件捆绑在一起。

    这是您需要一个插件附加到构建生命周期阶段的地方。

    有关如何将项目A的类作为项目B的最终JAR文件的一部分的详细信息,请参阅maven-jar-plugin或maven-shade-plugin。

    这假定您在B中运行的类为:java -jar projectB-full.jar