以下是我要做的事情:
jar
。可以说普通jar
是common.jar
,我使用的另一个项目是service1
。我在service1
中定义了一个本地repo文件夹,在其中包含common.jar
,并将其定义为service1
pom.xml
中的依赖项。 现在我想要生成service1.jar
并将其所有依赖项复制到lib
文件夹,以便我可以将其作为java -jar service.jar
运行并拥有{{1}包含在类路径中的文件夹。我可以使用lib
插件执行此操作。
但是,此插件仅复制copy-dependencies
的直接依赖项,并且不会复制service1
项目的jar
中提到的pom.xml
。
但是,我确实需要那些common
项目的依赖项common
在运行时才能成功运行jar
。
如何将这些service1
项目的依赖项common
复制到jar
的最终lib
文件夹?
提前致谢。
答案 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-file的Apache Maven Install Plugin目标的本地存储库中:
- install:install-file主要用于将外部创建的工件与其POM一起安装到本地存储库中。在这种情况下,项目信息可以从可选的指定pomFile获取,但也可以使用命令行参数给出。