使用复制依赖项包含传递依赖项jar

时间:2016-06-18 08:22:54

标签: maven dependencies

以下是我要做的事情:

  1. 我有一个包含公共类等的实用程序项目,我需要在其他两个项目中引用jar。可以说普通jarcommon.jar,我使用的另一个项目是service1。我在service1中定义了一个本地repo文件夹,在其中包含common.jar,并将其定义为service1 pom.xml中的依赖项。
  2. 编译时工作正常,我也可以在Eclipse中运行它。
  3. 现在我想要生成service1.jar并将其所有依赖项复制到lib文件夹,以便我可以将其作为java -jar service.jar运行并拥有{{1}包含在类路径中的文件夹。我可以使用lib插件执行此操作。

    但是,此插件仅复制copy-dependencies的直接依赖项,并且不会复制service1项目的jar中提到的pom.xml

  4. 但是,我确实需要那些common项目的依赖项common在运行时才能成功运行jar

    如何将这些service1项目的依赖项common复制到jar的最终lib文件夹?

    提前致谢。

1 个答案:

答案 0 :(得分:0)

Re:" 我在service1 "中定义了一个本地repo文件夹。 - 默认情况下,应该只有一个本地存储库文件夹与Maven一起使用,它位于~/.m2/repository。请参阅Maven / Introduction to Repositories Maven / Settings Reference

此存储库充当您的" lib"文件夹(在编译时),如果在POM中正确声明,Maven会自动处理项目的直接和传递依赖关系。请参阅Maven / Introduction to the Dependency Mechanism

因此,通常不需要自己复制依赖项。

因此,最好将实用程序项目转换为Maven项目并在那里执行mvn install。这样的工件 - 以及它所依赖的工件 - 被放到本地Maven存储库中,并且可以通过其他项目的 2 从那里引用为依赖。

如果无法做到这一点,您可以将实用程序jar放入具有install-fileApache Maven Install Plugin目标的本地存储库中:

  
      
  • install:install-file主要用于将外部创建的工件与其POM一起安装到本地存储库中。在这种情况下,项目信息可以从可选的指定pomFile获取,但也可以使用命令行参数给出。
  •