具有依赖性的Maven包

时间:2017-03-17 16:55:56

标签: java linux spring maven

我正在使用Spring框架开发一个项目,我使用Maven来构建它。 该项目将部署在未连接到Internet的嵌入式Linux设备中。我看到Maven没有在生成的JAR中打包依赖项,我需要Maven Shade插件,但我的问题是关于以一种严格的方式在目标(即servlet服务器)中部署Maven项目的常用方法。 在目标中使用maven命令行界面下载和执行软件或使用指示类路径的JRE的常用方法是什么?我的计划是使用rc.d并启动jamvm -cp lib / * .jar:。 my.package.Program但我不确定是最好的方法,还是我应该从JAR文件中部署我的依赖项。

1 个答案:

答案 0 :(得分:0)

是的,maven-shade-plugin是一个很好的选择,可以建立所谓的超级" jar,如果你想让你的应用程序成为"自包含"。这个插件,maven-shade-plugin创建了预期没有任何副作用的JAR。由于阴影阶段在Maven的标准构建生命周期中绑定了包目标,mvn package应该使用您在其配置中提供的finalname构建超级jar。有几个例子可以做到这一点(包括例如,指定"主类")。这样,你可以做jamvm -jar path/to/uber.jar,因为主要类会出现在JAR文件的清单中(虽然我没有尝试jamvm我自己

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