答案 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的运行时依赖范围。