我对 Maven 咒语比较陌生,但我正在尝试使用 Maven 构建一个命令行可运行的 jar。我已经设置了依赖项,但是当我运行 mvn install
并尝试运行 jar 时,会发生两件事。首先,没有找到主类,这是可以纠正的。更正此问题后,运行时出现错误,指出找不到类。
Maven 没有将我的依赖库打包到 jar 中,因此我无法将 jar 作为独立应用程序运行。我该如何纠正这个问题?
原文由 Stefan Kendall 发布,翻译遵循 CC BY-SA 4.0 许可协议
我对 Maven 咒语比较陌生,但我正在尝试使用 Maven 构建一个命令行可运行的 jar。我已经设置了依赖项,但是当我运行 mvn install
并尝试运行 jar 时,会发生两件事。首先,没有找到主类,这是可以纠正的。更正此问题后,运行时出现错误,指出找不到类。
Maven 没有将我的依赖库打包到 jar 中,因此我无法将 jar 作为独立应用程序运行。我该如何纠正这个问题?
原文由 Stefan Kendall 发布,翻译遵循 CC BY-SA 4.0 许可协议
Maven 不会将您的依赖项打包到您的 jar 文件中,因为您通常不会对 Java 程序执行此操作。
相反,您将依赖项与 jar 文件一起交付,并 在 Manifest 的 Class-Path
标头中 提及它们。
要走这条路,您需要为 maven-jar-plugin
启用 addClasspath
属性( 在此处 记录)。
如果您真的想在 jar 文件中包含所有依赖项,那么您可以使用 Maven Assembly 插件创建一个 jar-with-dependencies
。
原文由 Joachim Sauer 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
最简单的方法是使用
maven-assembly-plugin
和预定义的jar-with-dependencies
描述符创建程序集。您还需要为这个 uber jar 生成一个包含主类条目的清单。下面的代码片段显示了如何配置程序集插件来执行此操作:然后,要生成程序集,只需运行:
如果要生成程序集作为构建的一部分,只需将
assembly:single
mojo 绑定到包阶段:只需运行: