Maven打包之解决没有依赖jar包问题及分析
作者:刘一说
用户使用Maven打包FTPServer程序时,因未配置依赖打包导致jar体积过小且运行报错,解决方法是添加maven-assembly插件生成包含依赖的jar包,确保程序正常运行
问题
最近半年多做得项目都是springboot项目,今晚写了个FTPServer小软件,通过Maven打包之后jar文件只有20KB。
通过命令运行后,提示没有指定运行的Main程序。
出现错误信息:java.lang.NoClassDefFoundError
和 ClassNotFoundException。
原因分析
jar文件只有20KB。
明显不对,打开一看里面缺少依赖的jar包。
解决办法
<build> <plugins> <plugin> <!--<groupId>org.apache.maven.plugins</groupId>--> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin </artifactId> <configuration> <descriptorRefs> <!-- 此处填写打包后jar包后添加的标识 --> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <!-- 此处填写程序的主入口(main方法) --> <mainClass>com.liuyifen.Start.main</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
总结
maven打包时,默认不会将第三方依赖包打进来。可以在pom.xml中添加maven-assembly插件实现… 打出的包里 xxxx-with-dependencies.jar 就是包含依赖包的。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。