0

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

我想包括我正在这样做Project_1罐子Project_2

问题是当我包含 jar 时,我没有收到任何编译时错误,但是NoClassDefFoundError在运行时出现异常。

当我通过执行此处提到的步骤将其包含在内Project_1时。(开放项目示例)。我没有收到任何错误。运行时和编译时都不是。Project_2

你能解释一下我在这里缺少什么吗?

更新

Project_2部署在不在我的本地机器上但Project_1在我的本地机器上的服务器上。

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

4

1 回答 1

0

首先,一个好的经验法则是永远不要使用系统范围和系统路径来引入依赖项。根据我的经验,总是有更好的方法:-)

如果 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 构建将始终检索构建和测试的最新修订版。

更新

您应该使用Maven 存储库管理器在机器/团队之间共享 jar。建议包含在以下答案中:

与另一个团队共享模块的 jar

如何配置 Maven 以使用像 Nexus 这样的存储库在它的文档中进行了描述。

部署插件文档中所述,您需要向您的 POM 添加一个distributionManagement部分(详细说明存储库 URL),然后将项目的 jar 上传到您的存储库,如下所示:

   cd Project_1
   mvn clean deploy
于 2012-06-05T21:00:22.647 回答