Java 将一个Maven项目的Jar包含在另一个Maven项目中不起作用,但将该项目包含在另一个Maven项目中起作用

Java 将一个Maven项目的Jar包含在另一个Maven项目中不起作用,但将该项目包含在另一个Maven项目中起作用,java,exception,maven,maven-plugin,maven-jar-plugin,Java,Exception,Maven,Maven Plugin,Maven Jar Plugin,我有两个项目,即项目1和项目2。 这两个项目都是Maven,我正在使用Netbeans 我想把项目1的jar包含在我喜欢的项目2中 问题是,当我包含jar时,我没有得到任何编译时错误,但是在运行时我得到一个NoClassDefFoundError异常 当我通过执行上述步骤将项目_1包括在项目_2中时。开放项目示例。我没有得到任何错误。既不是运行时也不是编译时 你能解释一下我在这里遗漏了什么吗 更新 Project_2部署在不在本地计算机中的服务器上,而Project_1部署在本地计算机中 将Pr

我有两个项目,即项目1和项目2。 这两个项目都是Maven,我正在使用Netbeans

我想把项目1的jar包含在我喜欢的项目2中

问题是,当我包含jar时,我没有得到任何编译时错误,但是在运行时我得到一个NoClassDefFoundError异常

当我通过执行上述步骤将项目_1包括在项目_2中时。开放项目示例。我没有得到任何错误。既不是运行时也不是编译时

你能解释一下我在这里遗漏了什么吗

更新

Project_2部署在不在本地计算机中的服务器上,而Project_1部署在本地计算机中


将Project_1作为一个项目包含到Project_2中是为了在我的本地机器上进行测试。

首先,一个好的经验法则是永远不要使用拉入依赖项。根据我的经验,总有更好的方法:-

如果Project_2依赖于Project_1,则首先将其jar安装到本地存储库中:

   cd Project_1
   mvn clean install
观察输出,您会发现jar位于以下目录下的某个位置:

   $HOME/.m2/repository
完成后,jar将作为第二个构建的正常依赖项提供

  cd Project_2
  mvn clean compile
本地存储库确保项目现在彼此解耦。假设您使用的是Project_1的快照版本,Project_2版本将始终检索生成和测试的最新版本

使现代化 您应该使用在机器/团队之间共享JAR。以下答复载有建议:

如何配置Maven以使用Nexus之类的存储库,在本文中有介绍

如中所述,您需要在POM中添加distributionManagement部分,详细说明存储库URL,然后将项目的jar上载到存储库,如下所示:

   cd Project_1
   mvn clean deploy

执行第二个选项后,它还将在pom.xml中添加一个条目。请调查一下它添加了什么tag@rizzz86如果我包含项目,则范围和系统路径将丢失。因此,这意味着如果您在没有范围和系统路径的情况下手动添加标记,那么它也会工作?请参阅“谢谢”,但有问题。项目_1是本地计算机中的项目,项目_2是部署在服务器中的项目。要在Project_2中包含Project_1的jar,我必须将Project_1的jar放在服务器的某个位置,并将其包含在Project_2中。@Juniad然后您需要安装一个Maven存储库管理器,并使用它部署生成输出和提取依赖项。在共享JAR时强烈推荐,这也将提高构建的性能。看见