因为springboot本身集成了tomcat插件,所以我们可以直接使用mvn clean package命令打成jar包或者war包,然后使java -jar xxx.jar 或者 java -jar xxx.war命令非常方便的去部署运行项目。

但是在执行命令时提示:

PS F:\wkh_code\my-blog\target> java -jar myblog.war
myblog.war中没有主清单属性
PS F:\wkh_code\my-blog\target>

这里引出一个问题:主清单属性是什么

当我们把springboot项目打成war包或者jar后,解压之后我们可以发现一个名为META-INF文件夹。其中META-INF文件夹下有一个名为MANIFEST.MF的文件,该文件指明了程序的入口以及版本信息等内容,内容如下

Manifest-Version: 1.0
Implementation-Title: my-blog
Implementation-Version: 1.0-SNAPSHOT
Archiver-Version: Plexus Archiver
Built-By: hua
Implementation-Vendor-Id: com.wangkaihua
Spring-Boot-Version: 1.4.0.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.WarLauncher
Start-Class: com.wangkaihua.myblog.Application
Spring-Boot-Classes: WEB-INF/classes/
Spring-Boot-Lib: WEB-INF/lib/
Created-By: Apache Maven 3.5.0
Build-Jdk: 1.8.0_144
Implementation-URL: http://projects.spring.io/spring-boot/my-blog/

其中有Start-Class:指明了程序的入口类、Spring-Boot-Classes:指明了类的路径,所有编译后的class文件还有Spring-Boot-Lib等等,这些都是springboot项目独立运行必须要知道的。所以应该是我们打包的姿势不对,我们缺少了一个打包插件:spring-boot-maven-plugin

这里引出第二个问题:spring-boot-maven-plugin作用

Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。

解决方法

在pom.xml中引入对spring-boot-maven-plugin插件的依赖

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

执行mvn clean package,将自动生成必要的主清单属性,运行java -jar xxx.jar或者java -jar xxx.war时会根据主清单属性找到启动类启动程序。

参考:

没有主清单属性

springboot maven插件详解

xxx.jar或者xxx.war中没有主清单属性和spring-boot-maven-plugin的作用的更多相关文章

  1. xxx.jar 中没有主清单属性

    springboot  中是可以通过 jar 将整个项目打包成一个fat jar 的, 这个大家都知道. <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 --&g ...

  2. eclipse maven .jar中没有主清单属性

    报错环境: windows系统eclipse maven 打包jar包后, 运行 java -jar 报错 E:\My_java\mysql\target>java -jar original- ...

  3. 执行jar包报错:udfFull.jar中没有主清单属性

    在windows系统的cmd命令行窗口中执行: java -jar udfFull.jar {"movie":"1287","rate":& ...

  4. 启动SpringBoot的可执行jar 报错:target\spring-boot-hello-1.0-SNAPSHOT.jar中没有主清单属性

    打包成功,但是在执行时报错,没有主清单属性 解决: 增加红框内的依赖: <build> <plugins> <plugin> <groupId>org. ...

  5. jar中没有主清单属性

    在导出jar时指定主类位置 或手动配置jar包中的MANIFEST.MF文件: 添加Main-Class: gui 参考: JAVA环境变量 CLASSPATH .;%JAVA_HOME%\lib\d ...

  6. 解决Maven 编译出的jar中没有主清单属性

    出现这个问题的原因是 pom 中没有添加主程序入口 在配置中添加如下配置 <plugin> <groupId>org.apache.maven.plugins</grou ...

  7. idea jar 中没有主清单属性

    idea 中maven需要有插件 <build> <plugins> <plugin> <groupId>org.springframework.boo ...

  8. jar中没有主清单属性【解决办法】

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compi ...

  9. java -jar .jar中没有主清单属性

    pom里加上 <build> <plugins> <plugin> <groupId>org.springframework.boot</grou ...

随机推荐

  1. git版本管理规范

    一.基本开发流程: 二.分支命名 2.1主分支 ① master :随时可供在生产环境中部署的代码 ② dev: 保存当前稳定并且最新的开发分支(多人开发同一分支) 2.2辅助分支 主要用于新功能的并 ...

  2. ES搜索结果调优

    访问我的博客 自从使用 ElasticSearch 重构了主站的搜索项目之后,之后又陆续接入了其他两个项目,目前使用 SpringBoot 方式跑了一个伪集群,主站使用的时候,比较稳定,没有人反馈说有 ...

  3. 开发-封闭原则(OCP)

    1.什么是“开放-封闭” 随着软件系统规模的不断增大,软件系统的维护和修改的复杂性不断提高,这种困境促使法国工程院士Bertrand Meyer在1998年提出了“开放-封闭”(Open-Close ...

  4. MySQL中间件之ProxySQL(10):读写分离方法论

    返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.不同类型的读写分离 数据库中间件最基本的功能就是实现读写分离,Pr ...

  5. [转]Node.js框架对比:Express/Koa/Hapi

    本文转自:https://www.cnblogs.com/souvenir/p/6039990.html 本文翻译自: https://www.airpair.com/node.js/posts/no ...

  6. ADO.NET基础学习 一(连接数据库)

    (记录下方便自己复习) 概念 简单地理解为用来连接数据库的类. 工作流程 ①Connection对象用来连接数据库. 两种连接方式:Windows身份验证 / sqlserver验证 private ...

  7. 如何理解php的依赖注入

    之前写过关于php依赖注入的文章..最近发现有的朋友对这个还是理解模糊,在这里我想写个简单的实例帮助朋友们理解下...传统的思路是应用程序用到一个A类,就会创建A类并调用A类的方法,假如这个方法内需要 ...

  8. spring_02工具及接口案例

    1.spring工具类:ApplicationContextUtil.java,可以返回加载配置文件的容器对象 package com.ahd.utils; import org.springfram ...

  9. 改变eclipse默认的Tomcat部署路径

    eclipse中默认的项目部署路径是在项目的路径,不像myeclipse那样部署后项目在Tomcat的安装路径webapps下.这样虽然可以运行,但是不方便开发和调试,本文将介绍如何改变eclipse ...

  10. JavaWeb学习日记----XML基础

    1.XML基础: XML全称为eXtensible Markup Language;即可扩展标记型语言,同HTML一样使用标签来操作.它的可扩展性体现在标签可以由自己定义,可以是中文标签. XML用途 ...