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

时间:2012-06-05 20:39:14

标签: java exception maven maven-plugin maven-jar-plugin

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

我想在Project_1 Project_2中加入NoClassDefFoundError,我正在做this

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

通过执行here所述的步骤,我在Project_2中加入Project_2。 (Open Project示例)。我没有得到任何错误。无论是运行时还是编译时。

请你解释一下我在这里失踪了什么?

更新

Project_1部署在不在我本地计算机上的服务器上,但是Project_1在我的本地计算机中。

Project_2纳入{{1}}作为项目已在本地计算机上进行测试。

1 个答案:

答案 0 :(得分:0)

首先,采用一个好的经验法则是永远不要使用system scope and system path来引入依赖关系。根据我的经验,总会有更好的方法: - )

如果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 repository manager在机器/团队之间共享jar。建议包含在以下答案中:

Share jar of the module with another team

如何配置Maven以使用像Nexus这样的存储库,其中描述了documentation

deploy plugin documentation中所述,您需要将 distributionManagement 部分添加到POM(详细说明存储库URL),然后将项目的jar上传到存储库,如下所示:< / p>

   cd Project_1
   mvn clean deploy