首先,您需要了解为什么会收到此警告.
Maven的惯例是,一个项目应该建立一个单一的主神器.对于包装项目jar
,主要工件是由此产生的maven-jar-plugin
.此插件仅将JAR包含在项目中包含的类中.
一个项目最终可以生成其他工件,这些工件将通过其分类器与主工件区分开来:
除了主要工件之外,还可以附加到Maven项目的其他文件.这种附加的字段可以由其分类器识别和访问.
分类器是将附加到主工件名称的标识符.
那么当你想创造一个超级罐时会发生什么?不知何故,您的项目需要生成两个罐子.主要的是一个包含项目类的JAR,第二个是由此产生的超级罐maven-assembly-plugin
.为了将该次要附加工件与主要工件区分开来,jar-with-dependencies
添加了分类器.
因此,当您删除分类器时,您可以使用uber-jar有效地替换主工件.maven-assembly-plugin
在这种情况下会发出警告,这就是你的警告.您可以完全忽略它:它只是提醒您,您正在通过其他工件替换项目的主要工件.
除此之外maven-assembly-plugin
,请注意您还可以生成一个超级jar maven-shade-plugin
:
这个插件提供了将工件打包在超级jar中的功能,包括它的依赖关系和阴影 - 即重命名 - 一些依赖项的包.