Maven打包没有指定主类问题(xxx.jar中没有主清单属性)
Maven打包没有指定主类
在使用IDEA开发项目的时候经常会遇到使用Maven打包项目(打成jar包或者zip包),但是之前不太清楚打包插件的使用,有时候会遇到在启动jar包的时候没有指定主类的错误(dd-1.0-SNAPSHOT.jar中没有主清单属性)。今天学习一下插件使用,写一个针对该问题的教程。
软件环境
- IDEA:2017.1.5
- Maven:3.3.9
打xxx.jar包(不包含依赖的jar包)
Maven可以不添加插件默认打jar包,但是如果想要修改默认的参数需要重新引入插件添加需要修改信息。
1. 修改pom.xml
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.0</version> <configuration> <archive> <manifest> <mainClass>demo.LoadDataMR</mainClass> </manifest> </archive> </configuration> </plugin>
2.使用Maven工具打包
找到IDEA右边的【Maven Projects】->【项目名称】->【Lifecycle】
- a. 先双击【clean】查看控制台(Run)是否出现BUILD SUCCESS
- b. 然后双击【package】查看控制台(Run)是否出现BUILD SUCCESS
- c. 在IDEA左边查看【Project】界面会出现【target】文件夹,打开文件夹会出现xxx.jar包说明已经构建完成。
- d. 打开xxx.jar文件,在【META-INF/MANIFEST.MF】文件里面存在Main-Class: demo.LoadDataMR
打xxx-jar-with-dependencies.jar包
1. 修改pom.xml文件
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>demo.LoadDataMR</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly--> <executions> <execution> <id>make-assemble</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin>
2.使用Maven工具打包
找到IDEA右边的【Maven Projects】->【项目名称】->【Lifecycle】
- a. 先双击【clean】查看控制台(Run)是否出现BUILD SUCCESS
- b. 然后双击【package】查看控制台(Run)是否出现BUILD SUCCESS
- c. 在IDEA左边查看【Project】界面会出现【target】文件夹,打开文件夹会出现xxx.jar包说明已经构建完成。
- d. 打开xxx-jar-with-dependencies.jar文件,在【META-INF/MANIFEST.MF】文件里面存在Main-Class: demo.LoadDataMR
写在后面
Maven插件配置的信息只能针对其生成的文件,在maven-jar-plugin插件设置的信息只会出现在xxx.jar包中,在maven-assembly-plugin插件设置的信息只会出现在xxx-jar-with-dependencies.jar包中
处理maven打包中没有主类启动的情况
第一步:在pom文件中添加
<!--解决maven打包问题--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <manifestEntries> <Main-Class> com.xxx.XXApplication </Main-Class> </manifestEntries> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
第二步 mvn:clean
第三步 mvn:package
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
ServletContext读取web资源_动力节点Java学院整理
这篇文章主要介绍了ServletContext读取web资源,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-07-07Django rest framework使用类视图实现首页API
这篇文章主要介绍了Django rest framework使用类视图实现首页API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-08-08Springboot中com.mysql.cj.jdbc.Driver在yml文件中爆红的原因解读
这篇文章主要介绍了Springboot中com.mysql.cj.jdbc.Driver在yml文件中爆红的原因解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-05-05如何解决Spring的UnsatisfiedDependencyException异常问题
这篇文章主要介绍了如何解决Spring的UnsatisfiedDependencyException异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-04-04
最新评论