Java 带依赖项的Maven包

Java 带依赖项的Maven包,java,linux,spring,maven,Java,Linux,Spring,Maven,我正在用Spring框架开发一个项目,我使用Maven来构建它 此项目将部署在未连接到Internet的嵌入式Linux设备中。我看到Maven并没有将依赖项打包到生成的JAR中,我需要这样做,但我的问题是关于以striaghtforward方式在target(即servlet服务器)中部署Maven项目的常见方法 在target中使用maven命令行界面下载和执行软件的常用方法是使用JRE还是使用JRE指示类路径?。我的计划是使用rc.d并启动jamvm-cplib/*.jar:。my.pac

我正在用Spring框架开发一个项目,我使用Maven来构建它

此项目将部署在未连接到Internet的嵌入式Linux设备中。我看到Maven并没有将依赖项打包到生成的JAR中,我需要这样做,但我的问题是关于以striaghtforward方式在target(即servlet服务器)中部署Maven项目的常见方法


在target中使用maven命令行界面下载和执行软件的常用方法是使用JRE还是使用JRE指示类路径?。我的计划是使用rc.d并启动
jamvm-cplib/*.jar:。my.package.Program
但我不确定这是最好的方法,或者我应该从JAR文件中部署我的依赖项。

是的,如果你想让你的应用“自给自足”,maven shade插件是构建所谓的“优步”JAR的好选择。这个插件,maven shade插件创建了一个预计不会有任何副作用的JAR。由于shade阶段绑定了Maven标准构建生命周期中的包目标,
mvn包
应该使用您在其配置中提供的
finalname
构建uber jar。有几个例子可以做到这一点(例如,包括指定“main类”)。这样,您也许可以执行
jamvm-jarpath/to/uber.jar
,因为主类将位于jar文件的清单中(,尽管我自己没有尝试过
jamvm

一种可能的替代方法是依赖于所谓的运行时依赖项,这些依赖项不需要与应用程序打包在一起。例如,假设您知道您的运行时(例如,您在设备上的web容器)已经有很多可用于依赖项的JAR文件,那么您可以为这些文件搭载web容器,而不必在uber JAR中重新打包它们。请参见Maven的运行时依赖范围