运行 maven 部署后 jar 文件如何执行?
how jar file executes after running maven deploy?
我正在做一个项目,当我 运行 maven 测试时,我得到所有的依赖作为 jar,所以我可以在编辑代码时在这些 jar 中使用 类 的方法,但是我想知道运行ning maven deploy时把代码打包成jar放到远程仓库,这个jar是怎么执行的?它不需要 pom 中提到的所有罐子吗?因为在读取 jar 的内容时,它只包括 src/main/java 下代码的编译 类。
我认为有一点我误解了。如果我错过了一些基础知识,或者我应该知道,请给我推荐一个好的指南。
提前致谢
就像你说的,运行 一个 jar 你需要每个依赖项。但是要将它放在存储库中,您不需要它。
所以基本上当你想创建 运行nable jar 时,你需要一些 Maven 构建插件,它将把所有依赖项打包到你的 .jar 文件中,比如 maven-shade-plugin。
如果你想打包一个 jar 以将它上传到远程存储库供其他人使用,你不需要它,因为现在有人会使用你的依赖来下载你的每个依赖 jar创建了一个(maven 自动完成)。
例子
这完全取决于您需要做什么。
想象一下,您有一个显示芝加哥天气的控制台应用程序,该应用程序使用依赖项来获取天气,我们将其称为 weather-dep,因此您的应用程序内部需要 weather-dep 的依赖项。
现在,如果您希望您的用户只 运行 它(jar 可以是来自控制台“java -jar yourWeatherApp.jar”的 运行),您需要打包它以 yourWeatherApp.jar 将具有内部天气的方式-dep.jar maven 将在打包过程中下载。
第二种选择是当你知道有人想要使用 yourWeatherApp.jar 来显示芝加哥的天气,这样这个人就可以让他的应用程序调用它 usaWeatherApp.jar 并且他会在他的应用程序中包含你的依赖项然后可以使用 yourWeatherApp.jar 中的 类,也可以使用 weather-dep.jar 中的 类,因为它依赖于你的应用程序。
您只需要知道哪种用例最适合您。
简而言之,当有人不想 运行 您的应用程序而不是将其 functions/classes 等包含在他们的应用程序中时,您将包含依赖项的 jar 打包。
我正在做一个项目,当我 运行 maven 测试时,我得到所有的依赖作为 jar,所以我可以在编辑代码时在这些 jar 中使用 类 的方法,但是我想知道运行ning maven deploy时把代码打包成jar放到远程仓库,这个jar是怎么执行的?它不需要 pom 中提到的所有罐子吗?因为在读取 jar 的内容时,它只包括 src/main/java 下代码的编译 类。 我认为有一点我误解了。如果我错过了一些基础知识,或者我应该知道,请给我推荐一个好的指南。 提前致谢
就像你说的,运行 一个 jar 你需要每个依赖项。但是要将它放在存储库中,您不需要它。
所以基本上当你想创建 运行nable jar 时,你需要一些 Maven 构建插件,它将把所有依赖项打包到你的 .jar 文件中,比如 maven-shade-plugin。
如果你想打包一个 jar 以将它上传到远程存储库供其他人使用,你不需要它,因为现在有人会使用你的依赖来下载你的每个依赖 jar创建了一个(maven 自动完成)。
例子
这完全取决于您需要做什么。
想象一下,您有一个显示芝加哥天气的控制台应用程序,该应用程序使用依赖项来获取天气,我们将其称为 weather-dep,因此您的应用程序内部需要 weather-dep 的依赖项。
现在,如果您希望您的用户只 运行 它(jar 可以是来自控制台“java -jar yourWeatherApp.jar”的 运行),您需要打包它以 yourWeatherApp.jar 将具有内部天气的方式-dep.jar maven 将在打包过程中下载。
第二种选择是当你知道有人想要使用 yourWeatherApp.jar 来显示芝加哥的天气,这样这个人就可以让他的应用程序调用它 usaWeatherApp.jar 并且他会在他的应用程序中包含你的依赖项然后可以使用 yourWeatherApp.jar 中的 类,也可以使用 weather-dep.jar 中的 类,因为它依赖于你的应用程序。
您只需要知道哪种用例最适合您。
简而言之,当有人不想 运行 您的应用程序而不是将其 functions/classes 等包含在他们的应用程序中时,您将包含依赖项的 jar 打包。