Maven将引用项/依赖包打包到jar文件中
mvn package命令只能用于没有引用项/依赖包的打包。
解决方法:
如果要把引用项/依赖包打包到运行jar文件中,有2个可选插件:
maven-assembly-plugin
maven-shade-plugin
下面使用的是maven-assembly-plugin插件。
在pom.xml中加入以下内容:
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>这里填写主类名,例如com.clotho.util.Calculate</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
保存后,刷新Maven。
在命令行中输入:
mvn assembly:assembly
程序会自动把引用包也一起打包到jar文件中
附录:
1.提示“找不到plugins”错误的处理
如果使用的是IDEA,提示“Maven plugins can not be found”,可按以下步骤解决:
File -> Setting -> Build, Execution, Deployment -> Build Tools -> Maven -> 勾选Use plugin registry选项
然后,
File -> Invalidate Caches -> Invalidate and Restart(重启IDEA)
2.指定jar文件名
在build标签中增加<finalName>指定的jar文件名</finalName>
例如,要把jar文件名改成MyJarName:
<build> <finalName>MyJarName</finalName> </build>
3.去掉包含依赖包的jar文件名的名字后缀
maven-assembly-plugin会生成2个jar包,一个是原名(没包含依赖包),一个是带后缀名(包含了依赖包)
后缀名是在descriptorRef标签中配置,例如上面方法配置的是jar-with-dependencies:
<descriptorRef>jar-with-dependencies</descriptorRef>
如果注释掉这行,或去掉里面的jar-with-dependencies,编译时会报错。
解决方法是在configuration表中中加入一行<appendAssemblyId>false</appendAssemblyId>,例如:
<configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <appendAssemblyId>false</appendAssemblyId> </configuration>