运行maven部署后jar文件如何执行?

问题描述 投票:0回答:1

当我运行 Maven 测试时,我将所有依赖项作为 jar 获取。我可以在编辑代码时使用这些 jar 中的类的方法。但我想知道:

  • Maven运行时是否会将代码以jar格式部署到包中,放到远程仓库中?
  • 这个jar如何执行?
  • 它不需要 pom 中提到的所有 jar 吗?

我问这个是因为,在读取jar的内容时,它只包含src/main/java下代码的编译类。 我觉得有一点我理解错了。

java maven jar executable-jar
1个回答
1
投票

就像你说的,要运行一个 jar,你需要每个依赖项。但要将其放入存储库,您不需要它。

所以基本上,当你想创建可运行的 jar 时,你需要一些 Maven 构建插件,它将把每个依赖项打包到你的 .jar 文件中,比如 maven-shade-plugin。

如果你想打包一个jar并将其上传到远程存储库供其他人使用,你不需要它,因为现在它就在某人一边,他将使用你的依赖项来下载你创建的每个依赖jar(maven自动执行)。

示例

这完全取决于您需要做什么。

假设您有一个控制台应用程序,可以显示芝加哥的天气,该应用程序使用依赖项来获取天气,我们将其称为“weather-dep”,因此您的应用程序需要内部有“weather-dep”的依赖项。

现在,如果您希望您的用户只运行它(jar 可以从控制台“java -jar yourWeatherApp.jar”运行),您需要以 yourWeatherApp.jar 将在 Weather-dep.jar 中包含的方式打包它,maven将在打包过程中下载。

第二个选项是当您知道有人想要使用 yourWeatherApp.jar 显示芝加哥的天气时,该人将他的应用程序命名为 usaWeatherApp.jar,他会将您的依赖项包含在他的应用程序中,然后他将能够使用 yourWeatherApp 中的类.jar 也来自weather-dep.jar,因为它是您应用程序内部的依赖项。

您只需要知道哪种用例最适合您。

简短的回答是,当有人不想只运行您的应用程序而不在其应用程序中包含它的函数/类等时,您可以打包包含依赖项的 jar。

© www.soinside.com 2019 - 2024. All rights reserved.