【发布时间】:2017-02-22 11:39:27
【问题描述】:
所以我有以下问题:
我有一个包含多个 maven 依赖项的 maven 项目。当我运行mvn install 时,它将被打包为 .jar,并且 .jar 与 .pom-File 将一起放置在我的 maven-repository 中。现在,这个 .jar 不包含其他依赖项(也不应该包含!)。现在,鉴于我已经在我的 maven 存储库中安装了所有需要的依赖项(显然 maven 会处理),我如何在命令行上运行这个 jar 而不将类路径设置为指向 maven-repository 中的每个该死的 jar ?还有其他方法吗? mvn exec:java 似乎只在 maven-source 目录中工作,它在其中查找“pom.xml”。但安装后,“pom.xml”变成“name-version.pom”,我有一个 .jar 而不是直接源/类文件。有没有其他方法可以指向mvn exec:java 与 maven 存储库中的 .jar 和 .pom-File 一起使用?或者也许有其他更好的方法来做到这一点?
提前致谢:)
EDIT1:我将把我的评论从下面放在这里以避免进一步的误解:
我不想将依赖项 jar 放在某个地方。我想使用 maven 已经处理好的存储库。理论上,我在本地 maven 存储库中已经拥有了我将需要的所有库。我希望能够下载任何其他 maven 项目,它可能正在使用我已经在本地存储库中安装的一些库,也使用“maven install”安装它,然后删除我下载的源代码,然后执行 .jar由 maven 创建并告诉 java 或 maven(取决于最佳方法是什么)在我的本地 maven 存储库中查找该项目的依赖项。 我希望我说得足够清楚:)
编辑 2:所以我决定使用 mvn install 将项目安装到我的本地 .m2 存储库中,并将项目未打包在某个定义的文件夹中。然后我可以在这些项目中调用 mvn exec:java 来运行它们并maven 将为我解决所有的依赖关系。
【问题讨论】:
-
你想构建一个包含所有依赖项的包,你可以在任何地方运行吗?
-
没有。正如我所说:“现在,这个 .jar 不包含其他依赖项(也不应该包含!)”。我希望并且需要它没有依赖关系。这只是一个示例场景。在实际情况下,我将克隆一些其他用户的 maven-projects 并在我的机器上运行它,我不想在我的服务器上存储同一个库 100 次。
-
如果您想让您的工件可执行,那么您根本无法在不包含 jar 中的依赖项的情况下执行此操作。
-
使用eclipse或其他IDE,从IDE导入或克隆为maven项目并构建运行,IDE将解析m2存储库中的所有maven依赖。那如果对你没关系就那样做..
-
IDE 没有问题,因为这必须自动发生(由其他脚本调用)。